2013-07-31 82 views
4

我對PowerShell仍然很陌生,需要一些幫助。如何查找所有.bat文件並逐個執行?

我在一個叫做:c:\scripts\run\ 的文件夾中有一些.bat文件,我想一個一個地運行它們,但我不知道我有多少個,它會隨時更改。

所以我想與foreach這樣運行了一個循環:

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

但我不知道現在該怎麼運行它們。 我知道我可以通過1這樣運行了他們1:

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

但我怎麼實現的? 謝謝!

回答

10

試試這個:

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

非常感謝你,幫助了我。 – RayofCommand

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

謝謝你。如果腳本運行成功,是否有辦法檢查每個正在運行的bat文件?我的腳本創建日誌文件,我可以檢查。 – RayofCommand

+0

當然,你在'ForEach-Object'中有一個完整的塊。 – Joey

相關問題