我有一个非常好的部署方法。Powershell批处理文件在目录中执行.ps1文件
我目前使用powershell执行.sql
文件,并将结果写入日志文件。目前批处理文件.ps1
文件和.sql
文件都在同一个目录中。
我想有执行建设01 .ps1
和一个批处理文件时生成01 .ps1
完成它执行建设02 .ps1
等
有时候,我有20个建立文件夹来部署和我试图避免到双击20 .bat
文件。
我是新来的PowerShell - 我很抱歉,如果这不明确请问。谢谢。
我有一个非常好的部署方法。Powershell批处理文件在目录中执行.ps1文件
我目前使用powershell执行.sql
文件,并将结果写入日志文件。目前批处理文件.ps1
文件和.sql
文件都在同一个目录中。
我想有执行建设01 .ps1
和一个批处理文件时生成01 .ps1
完成它执行建设02 .ps1
等
有时候,我有20个建立文件夹来部署和我试图避免到双击20 .bat
文件。
我是新来的PowerShell - 我很抱歉,如果这不明确请问。谢谢。
试试这个:
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
}
一个侧面说明,当前目录则是运行命令的目录。这是不是脚本目录本身(如果你从脚本运行命令)
或者,如果你严格想要一个批处理文件,而不是一个脚本,你可以这样做:
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
cd/d%〜dp0 powershell.exe -File sp_script.ps1 pause – user3302439
每个批处理文件包含此: CD/d%〜DP0 powershell.exe -File sp_script.ps1 pause 我只是把Get-ChildItem -Recurse -include“* .ps1”| .bat文件中的%{&$ _} ?我真的很抱歉。 – user3302439
我写的使批处理文件无用。这个powershell脚本将调用所有ps1文件。 –
如果要指定一个目录,请使用Get-ChildItem $ path -Recurse -include“* .ps1” – David