【问题标题】:Making a batch file wait until the shutdown command called by a Perl script (which is called by the batch file) gets executed使批处理文件等到 Perl 脚本(由批处理文件调用)调用的关闭命令被执行
【发布时间】:2015-05-19 10:22:14
【问题描述】:

我有一个批处理文件,它调用 Perl 脚本,然后是 Perl 脚本,它进行一些处理,然后执行命令 shutdown /r /t 1。 在调用 Perl 后的批处理文件中,有 exit/b。例如:

批处理文件:

perl doSomething.pl

exit /b

Perl 文件:

do stuff

shutdown /r /t 1

我希望批处理文件不退出并等到关机开始。

我试过了

start /wait perl dosomething.pl

并与任务列表循环以检查perl.exe 并仅在perl.exe 进程完成时退出。没有任何效果。

是否有解决方案可以在不“休眠”或无限循环等到关机的情况下实现这一目标?

【问题讨论】:

  • 你的问题毫无意义。在perl 之后perl 退出之前,批处理文件不会执行任何操作。

标签: windows perl batch-file cmd


【解决方案1】:

嗯,这很奇怪。它只需要使用您提到的最后一个选项(检查任务列表)。

但是,我能想到的唯一选择是创建一种标志文件。让您的 perl 脚本在它终止之前的某个地方创建一个文件,并使您的 bat 循环直到找到该文件并在终止之前将其删除。为避免“忙于等待”,您可以在 bat 循环中添加 ping localhost -n 6 >nul 之类的内容。

【讨论】:

  • 我认为任务列表不起作用,因为即使 perl 在启动关闭之前退出。我不允许在 perl 文件中进行更改,所以它不起作用。
  • 对不起,我不明白“因为即使 perl 在启动关机之前退出”的意思。
  • Perl: some stuff shutdown \r \t 1 exit 因此,当调用shutdown命令时,由于1秒超时而执行shutdown之前Perl退出。所以我无法在任务列表中找到它
  • 我对 perl 不是很熟悉。 shutdown \r \t 1 打电话给C:\Windows\System32\shutdown.exe,不是吗?让你的bat脚本等待shutdown.exe出现在任务列表中,消失后退出如何?
猜你喜欢
  • 2015-11-30
  • 2013-04-20
  • 2011-11-17
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多