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

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

但是我该如何实现这一点呢?谢谢!
2个回答

11

试一下这个:

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

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

谢谢你。有没有办法在每个运行的批处理文件之间检查脚本是否成功运行?我的脚本创建日志文件,我可以可能检查。 - RayofCommand
当然,你可以在 ForEach-Object 中使用整个代码块。 - Joey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接