我有一个非常简单的Windows .BAT文件:
set PATH=c:\xxx;%PATH%
call foo.pl
set VAR=true
我想" call
"将启动一个新的批处理过程,而不会影响当前的批处理。但是,批处理文件在foo.pl
完成执行后立即退出。从未调用set VAR=true
。
有没有办法解决它?
答案 0 :(得分:0)
foo.pl 不是批处理文件,而是Perl脚本。
所以你需要使用
path c:\xxx;%PATH%
"Path to\Folder With\perl.exe" "foo.pl"
rem Additional batch code executed after Perl script execution finished.
换句话说,如果Perl的程序文件文件夹在此批处理文件所在的所有计算机上都不相同,则必须以完整路径运行控制台应用程序perl.exe
,或者只运行perl.exe
。使用并希望 PATH 还包含包含perl.exe
。
如果您在命令行或批处理文件中指定 foo.pl ,Windows会在Windows注册表中查找哪个应用程序与 .pl 相关联以执行操作打开的。如果存在这样的文件关联,Windows会在使用命令start的单独过程中运行此应用程序。
因此使用call foo.pl
就像使用start foo.pl
。
PATH 不仅是一个环境变量,而且还是一个内部命令,用于在批处理文件中随时更改环境变量 PATH 的值。这就是我从第一行删除set
的原因。最好使用内部命令path
来修改环境变量 PATH 。