使用perl中的服务器路径运行批处理脚本

时间:2014-02-03 16:35:42

标签: windows perl batch-file cmd

我有一个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 \“”);

所以我的最终问题是,如何使用服务器路径启动批处理脚本?

1 个答案:

答案 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"}); 

不幸的是,它似乎不起作用。这不是引用有帮助的情况。它确实需要\