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

时间:2017-02-23 20:01:03

标签: powershell batch-file cmd

作为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"

不幸的是,该过程出错:

  

'测量 - 对象'不被识别为内部或外部命令,可操作程序或批处理文件。

如果您有任何解决问题的建议,请告诉我。提前谢谢!

1 个答案:

答案 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"