我有一个非常好的部署方法。
我目前使用powershell执行.sql
个文件,并将结果写入日志文件。目前,批处理文件.ps1
文件和.sql
文件都在同一目录中。
我想有一个执行Build 01 .ps1
的批处理文件,当Build 01 .ps1
完成时,它执行Build 02 .ps1
等。
有时我会部署20个构建文件夹,我试图避免双击20 .bat
个文件。
我是PowerShell的新手 - 如果不清楚我会道歉请问。谢谢。
答案 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