我有一个perl脚本,可以执行一些批处理脚本。我只使用这些批处理脚本,因为批处理可以比perl更快地解析1000个文件的目录,或者至少我在perl中找不到快速的方法来执行它。现在代码是本地的,所以我根据我映射驱动器的方式使用目录路径来启动脚本,如下所示:
system(“start J:/scoreboard/scripts/Actual/update_current_build.bat”。“\”$ rows [0] [$ count] \“”。“\”* \“”。“\”$ output_file \ “”);
我需要让它更便携,以便它可以从任何机器运行。我尝试使用服务器路径,但是当批处理脚本执行时,它说我有一个'无效的开关 - “/”。
system(“start //server/share/scoreboard/scripts/Actual/update_current_standards.bat”。“\”$ output_file \“”);
所以我的最终问题是,如何使用服务器路径启动批处理脚本?
答案 0 :(得分:2)
虽然Windows本身接受/
和\
作为目录分隔符,但不是每个程序都这样做。
>dir c:\
Volume in drive C is OS
...
>dir c:/
Invalid switch - "".
问题在于/
标记了选项的开头(例如dir /s/b
)。
你可以简单地使用另一个斜杠。
system(qq{start \\\\server\\... "$output_file"});
对于其中许多程序,引号都有歧义。
>dir "c:/"
Volume in drive C is OS
...
所以我们只需执行start "//..."
?不,start
有奇怪的语法。如果引用第一个参数,则将其视为用于控制台的标题。
start cmd # Ok
start "cmd" # XXX
start "" "cmd" # Ok
所以你需要以下内容:
system(qq{start "" "//..." "$output_file"});
不幸的是,它似乎不起作用。这不是引用有帮助的情况。它确实需要\
。