Windows 快捷方式、命令行和 Perl

Windows 快捷方式、命令行和 Perl

我使用 Windows 中的命令行开发了几个脚本(这是必要的,因为有几个“说”注释需要显示)并使用以下行:

perl "D:/path to script"

一切都很好。但是...

今天早上,我在 Windows 上创建了一系列快捷方式,基本思路是他们可以单击图标,然后 CMD 将打开并开始运行脚本。这就是我被困住的地方!

在快捷方式的目标属性中,我输入了:

C:/system32/cmd.exe D:/path to perl script

这将打开命令行,并将提示符设置为“D:/path to script_”(我还尝试在两个参数之间添加 perl,就像直接在窗口中输入一样。但这没有效果)我尝试在引号中使用“perl D:/path to script”。但这没有用

然后我想知道批处理文件,但是批处理运行后它们似乎会关闭窗口,因此无法显示所说的命令!

我也听说过“pl2bat”,但不知道它是否能让 CLI 在其余程序运行时保持活动状态。

这是在客户端运行,而不是在浏览器中,或将数据发送到服务器,其想法是使用 USB 上的 Perl,它将是“自包含的”,无需在 PC 上安装任何东西

答案1

一般来说,您在快捷方式中作为目标放置的任何内容也可以在命令行上运行,反之亦然。

您可以有一个运行的命令<path-to-perl>\perl.exe <full-path-to-pl-script>。请注意,没有引用 cmd.exe。此命令可以直接在命令提示符下运行,也可以粘贴到批处理文件中,也可以作为快捷方式的目标。它甚至可以在 Windows 计划任务中使用!

如果您想要执行更多命令,例如在 perl 脚本后暂停,请使用如下命令:cmd /c "<path-to-perl>\perl.exe <full-path-to-pl-script> & pause"或者类似这样的命令:cmd /k "<path-to-perl>\perl.exe <full-path-to-pl-script>"


但您不需要使用“cmd”或“pause”。您只需让 perl 脚本在最后一行执行即可。但您还想将输出打印到 STDERR 或将其包含在 pl 脚本的顶部$| = 1;。如果您让 Perl 默认在 STDOUT 上进行输出缓冲,则在按下 ENTER 后您才会看到部分输出。

use strict; use warnings; $| = 1;
print "some info\n";
foreach my $infoline (@infolines) { print "$infoline\n"; }
print "hit ENTER to continue ";
<STDIN>;

回到你开始的例子,你说打开命令行,并将提示符设置为“D:/path to script_”,这实际上是一个问题。快捷方式应该直接启动 perl 脚本,对于 perl 脚本来说,起始目录是快捷方式中的“起始于”值。如果需要,请使用 chdir 从那里更改。我的建议是给予 perl 脚本完全控制权,包括要使用的目录,并忽略快捷方式中的起始目录。

答案2

您应该能够使用包含 perl 脚本的标准 .BAT 文件执行此操作。要保留 CMD 窗口,请将暂停命令放在 perl 脚本后面。

D:/perl 脚本的路径

暂停

相关内容