Powershell批处理文件,用于在目录中执行.ps1文件

时间:2014-02-12 16:11:26

标签: batch-file powershell

我有一个非常好的部署方法。

我目前使用powershell执行.sql个文件,并将结果写入日志文件。目前,批处理文件.ps1文件和.sql文件都在同一目录中。

我想有一个执行Build 01 .ps1的批处理文件,当Build 01 .ps1完成时,它执行Build 02 .ps1等。

有时我会部署20个构建文件夹,我试图避免双击20 .bat个文件。

我是PowerShell的新手 - 如果不清楚我会道歉请问。谢谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

Get-ChildItem -Recurse -include "*.ps1" | % { & $_ }

要了解它是如何工作的,您可以将此行分解为:

$allScripts = Get-ChildItem -Recurse -include "*.ps1" #Get all ps1 file under the current directory
foreach($script in $allScripts){
    & $script # run the script
}

旁注,当前目录是运行命令的目录。这不是脚本目录本身(如果从脚本运行命令)

答案 1 :(得分:0)

或者,如果您严格要求批处理文件而不是脚本,则可以执行以下操作:

Start "" /wait "powershell.exe . .\build01.ps1"
Start "" /wait "powershell.exe . .\build02.ps1"
Start "" /wait "powershell.exe . .\build03.ps1"
Start "" /wait "powershell.exe . .\build04.ps1"

为了澄清,我将批处理文件称为以.BAT.CMD扩展名结尾的文件。上面应按顺序运行.PS1脚本,等待每个脚本在启动下一个脚本之前完成。如果您希望从其他批处理文件中单独调用每个批处理文件,则可以使用CALL命令,例如:

CALL Batch01.bat
CALL Batch02.bat
CALL Batch03.bat