如何查找所有.bat文件并逐个执行?

时间:2013-07-31 15:25:46

标签: powershell batch-file powershell-v2.0

我仍然是PowerShell的新手,需要一些帮助。

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:10)

试试这个:

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

答案 1 :(得分:3)

您可以使用

& $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) {
    ...
  }
}