在批处理文件中使用PowerShell以获取当前目录的总大小和计数时出错



作为PowerShell(PS)的新手,我想在从CMD启动的当前批处理文件中使用PowerShell来获取所有文件的总尺寸和计数,不包括Sub中的文件-folders,在当前目录中。

再次,此任务将被合并到批处理文件的中间,这意味着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"

不幸的是,该过程有一个错误:

'MEATUR-OBJECT'未被认为是内部或外部命令,可操作程序或批处理文件。

如果您有任何建议可以解决该问题,请告诉我。预先感谢您!

是因为管道(|)的意思是"输出命令的结果到管道右侧的命令"。它的prio高于其他命令。

-noexit不会在powerShell命令中执行脚本中的其余命令。如果要将批处理和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"

最新更新