[英]second bat is not executed PowerShell script
下面的 bat 文件被 PowerShell 脚本调用,但是只有 bat1.bat 被执行,其他的 bat2.bat 和 last.bat 没有被调用
#first bat
Start-Process "C:\bat1.bat" -Wait
#run second bat
Start-Process "C:\bat2.bat" -Wait
#run last bat
cmd.exe /c '\last.bat'
非常感谢您的支持
尝试使用这个:
Set-Location C:\temp
Start-Process .\bat1.bat -Wait
Write-Host "bat1.bat DONE"
Start-Process .\bat2.bat -Wait
Write-Host "bat2.bat DONE"
cmd /c .\last.bat
Write-Host "last.bat DONE"
我制作了以下 .bat 文件:
bat1.bat
@ECHO OFF
ECHO bat1
PAUSE
bat2.bat
@ECHO OFF
ECHO bat2
PAUSE
最终的.bat
@ECHO OFF
ECHO final
当 PS 脚本运行时,所有 3 个都按预期运行。
如果上一个过程完成,则放置 Write-Host 将显示在控制台中。
编辑:
之前没有多解释,不好意思。
您的问题是 .bat 文件之一没有完成。
您拥有的语法应该运行 bat1.bat 和 bat2.bat。 "cmd.exe /c "\last.bat" 会失败。如果你不打算设置 c: 的路径,你需要 "c:\last.bat"。如果你这样做了,你会想要 " .\last.bat"
为了确保您的脚本能够正常工作,我制作了 3 个基本的 .bat 文件,其功能仅用于记录与它们关联的字符串。 这样做可以保证如果出现任何问题,那是 PS 代码而不是 .bat 代码。
在验证您的脚本可以运行后,我制作了我提供的脚本。 使用 Set-location 不是必需的,但我认为它使代码看起来更干净。 每个进程之后的 Write-Host 都登录到脚本正在移动到下一个进程的 PS 控制台。
为什么不试试
CALL "C:\bat1.bat"
CALL "C:\bat2.bat"
\last.bat
并完全避免Powersmell?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.