【问题标题】:how to find all .bat files and execute them one by one?如何找到所有.bat文件并一一执行?
【发布时间】:2013-08-01 05:20:34
【问题描述】:

我对 PowerShell 还是很陌生,需要一些帮助。

我在一个名为 c:\scripts\run\ 的文件夹中有一些 .bat 文件 我想一个一个地运行它们,但我不知道我有多少,它会不时变化。

所以我想用foreach 像这样运行一个循环:

foreach ($file in get-childitem c:\scripts\run | where {$_.extension -eq ".bat"})

但我现在不知道如何运行它们。 我知道我可以像这样一个一个地运行它们:

./run1.bat
./run2.bat
./run3.bat

但是我该如何实现呢? 谢谢!!

【问题讨论】:

    标签: powershell batch-file powershell-2.0


    【解决方案1】:

    试试这个:

    Get-Childitem -Path c:\scripts\run -Filter *.bat | % {& $_.FullName}
    

    【讨论】:

      【解决方案2】:

      你可以使用

      & $file.FullName
      

      在你的循环中。

      不过,我可能只使用管道,而不是显式的 foreach 循环:

      Get-ChildItem C:\scripts\run -Filter *.bat | ForEach-Object { & $_.FullName }
      

      如果您希望在每个批处理文件运行后进行额外检查:

      gci C:\scripts\run -fi *.bat | % {
        & $_.FullName
        if (Test-Path C:\scripts\run\blah.log) {
          ...
        }
      }
      

      【讨论】:

      • 也谢谢你。如果脚本运行成功,有没有办法检查每个正在运行的 bat 文件?我的脚本创建日志文件,我可以检查。
      • 当然,ForEach-Object 内的整个区块可供您使用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 2020-11-23
      • 1970-01-01
      相关资源
      最近更新 更多