等待文件存在后启动批处理文件

发布于 2025-01-10 00:04:53 字数 333 浏览 0 评论 0原文

我想在文件可用后(在由单独的 robocopy 作业复制后)启动批处理文件。

下面是我尝试过的命令。

Do {Write-Host 'Waiting'; Sleep 10;} While ((Test-Path -Path C:\Temp\file.txt) -eq $False) {Start-Process "cmd.exe" "/c C:\Temp\file.bat" -NoNewWindow -Wait}

但是,当 while 条件的计算结果为 False 时,Powershell 仅打印该语句而不是执行它。

I want to launch a batch file after a file becomes available (after it is copied by a separate robocopy job).

Below is the command I tried.

Do {Write-Host 'Waiting'; Sleep 10;} While ((Test-Path -Path C:\Temp\file.txt) -eq $False) {Start-Process "cmd.exe" "/c C:\Temp\file.bat" -NoNewWindow -Wait}

However, when the while condition evaluates to False, Powershell merely prints the statement instead of executing it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

晒暮凉 2025-01-17 00:04:53

正如 @jeroen-mostert 指出的那样,删除大括号。

Do {Write-Host 'Waiting'; Sleep 10;} While ((Test-Path -Path C:\Temp\file.txt) -eq $False) Start-Process "cmd.exe" "/c C:\Temp\file.bat" -NoNewWindow -Wait

或者也可以添加分号以提高可读性

Do {Write-Host 'Waiting'; Sleep 10;} While ((Test-Path -Path C:\Temp\file.txt) -eq $False) ; Start-Process "cmd.exe" "/c C:\Temp\file.bat" -NoNewWindow -Wait

Remove the curly brace as @jeroen-mostert has pointed out.

Do {Write-Host 'Waiting'; Sleep 10;} While ((Test-Path -Path C:\Temp\file.txt) -eq $False) Start-Process "cmd.exe" "/c C:\Temp\file.bat" -NoNewWindow -Wait

or can also add a semi-colon for readability

Do {Write-Host 'Waiting'; Sleep 10;} While ((Test-Path -Path C:\Temp\file.txt) -eq $False) ; Start-Process "cmd.exe" "/c C:\Temp\file.bat" -NoNewWindow -Wait
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文