繁体   English   中英

第二个 bat 未执行 PowerShell 脚本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM