我知道%~dp0,它代表包含批处理脚本的完全展开的目录,但我要找的是:
我目前正在Perl中使用此方法调用批处理脚本:
`"../run.bat" -f $ARGV[$#ARGV]`;
然后捕获输出并对其进行处理。
答案 0 :(得分:5)
我不太清楚我理解你的问题。但是,为什么不简单地将perl脚本中的当前目录更改为批处理脚本的目录,然后调用批处理脚本?
答案 1 :(得分:3)
@pushd %~dp0
到批处理脚本的开头。这会将工作目录更改为批处理文件的基目录。为了完整起见(如果批处理文件将由其他批处理文件使用),您应该添加
@popd
最后。
答案 2 :(得分:0)
这是一个bat脚本,用于启动相对于.bat脚本的位置中包含的催化剂服务器perl脚本:MyPhp / script /
set bindir=%~dp0
set perlpath=%bindir%perl\bin
set buildpath=%bindir%\bin
set PATH=%PATH%;%perlpath%;%buildpath%
"%perlpath%\wperl.exe" "%bindir%MyPhp\script\myphp_server.pl" -p 35900
这是一个VBS脚本,可以在不创建cmd窗口的情况下启动此相同的脚本:
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & fso.GetParentFolderName(wscript.ScriptFullName) & "\perl shell.bat"& Chr(34), 0
Set WshShell = Nothing
非常可怕的东西,但它有效