如果我从命令提示符 (c:\windows\system32\cmd.exe) 运行 Perl 脚本,如何在脚本执行完成后退出命令提示符。

我试过 system("exit 0") 在 Perl 脚本内部,但不会从运行 Perl 脚本的位置退出 cmd 提示符 shell。

我也尝试过 exit; Perl 脚本中的命令,但这也不起作用。

有帮助吗?

解决方案

如果你开始的命令shell只运行perl脚本,通过Arkaitz希门尼斯的答案应该工作(我投了赞成票。)

如果没有,你可以创建一个批处理文件一样runmyscript.bat,与内容:

@echo off
perl myscript.pl
exit

exit将结束shell会话(和作为副作用,结束批处理脚本本身。)

其他提示

尝试使用这样的命令行运行Perl脚本:

perl script.pl & exit

第一个完成后的符号将启动第二命令。还可以使用&&执行仅当首次成功(错误码为0)的第二命令。

你有没有尝试过 cmd.exe /C perl yourscript.pl ?

根据 cmd.exe /? /C 执行字符串指定的命令,然后终止。

可以在新窗口中使用 START DOS命令启动程序。如果调用与/B则创建额外的窗口。然后,你可以调用exit关闭当前窗口。

那会做的伎俩?

可以将信号从发送的Perl到母体壳:

 kill(9,$PARENT_PID);`

不幸的是,getppid()功能并不在Perl实现在Windows上,所以你必须通过一些其他手段来找出父shell的PID。此外,信号#9可能不是最好的选择。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top