Powershell 如何找到所有.bat文件并逐个执行它们?

Powershell 如何找到所有.bat文件并逐个执行它们?,powershell,batch-file,powershell-2.0,Powershell,Batch File,Powershell 2.0,我对PowerShell还是很陌生,需要一些帮助 我在一个名为:c:\scripts\run\ 我想一个接一个地运行它们,但我不知道我有多少,它会时不时地变化 所以我想用foreach运行一个循环,如下所示: foreach ($file in get-childitem c:\scripts\run | where {$_.extension -eq ".bat"}) 但我现在不知道如何操作它们。 我知道我可以这样一个接一个地运行它们: ./run1.bat ./run2.bat ./run

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

我在一个名为:
c:\scripts\run\
我想一个接一个地运行它们,但我不知道我有多少,它会时不时地变化

所以我想用
foreach
运行一个循环,如下所示:

foreach ($file in get-childitem c:\scripts\run | where {$_.extension -eq ".bat"})
但我现在不知道如何操作它们。 我知道我可以这样一个接一个地运行它们:

./run1.bat
./run2.bat
./run3.bat
但我如何实现这一点? 谢谢

您可以使用

& $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) {
    ...
  }
}
试试这个:

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

也谢谢你。是否有方法检查每个正在运行的bat文件之间的脚本是否已成功运行?我的脚本创建日志文件,我可以检查这些文件。当然,您可以在
ForEach对象中使用整个块。