作为Powershell(PS)的新手,我想在从CMD启动的当前批处理文件中使用Powershell来获取当前目录中所有文件的总大小和计数,不包括子文件夹中的文件。
同样,此任务将合并到批处理文件的中间,这意味着PS将仅用于此任务,而其余的仍在CMD上运行。最后,我想将此任务的结果导出到文本文件中。
这是我在批处理文件中的尝试:
start powershell.exe -noexit ($colitems = Get-ChildItem | Measure-Object Length -Sum)
" Total size: "+ "{0:N2}" -f ($colitems.sum / 1MB) + " MB, and" + $colitems.count + " total files"
不幸的是,该过程出错:
'测量 - 对象'不被识别为内部或外部命令,可操作程序或批处理文件。
如果您有任何解决问题的建议,请告诉我。提前谢谢!
答案 0 :(得分:0)
因为管道(|
)意味着"将命令的结果输出到管道右侧的命令"。它的prio高于其他命令。
-noexit
将不会像PowerShell命令那样执行脚本中的其余命令。如果您想在一个文件中combine both batch and powershell,可以试试这个:
<# : batch portion
@echo off & setlocal
(for %%I in ("%~f0";%*) do @echo(%%~I) | ^
powershell -noprofile "$argv = $input | ?{$_}; iex (${%~f0} | out-string)"
goto :EOF
: end batch / begin powershell #>
($colitems = Get-ChildItem | Measure-Object Length -Sum)
" Total size: "+ "{0:N2}" -f ($colitems.sum / 1MB) + " MB, and" + $colitems.count + " total files"