5

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

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

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

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

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

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

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

4

2 回答 2

10

尝试这个:

Get-Childitem -Path c:\scripts\run -Filter *.bat | % {& $_.FullName}
于 2013-07-31T15:38:21.123 回答
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) {
    ...
  }
}
于 2013-07-31T15:28:16.740 回答