2015-11-17 79 views
0

我需要调用zipjs.bat将路径作为参数的文件。 我打电话给.bat文件通过另一个.bat文件调用start.bat。 这两个文件不在文件系统中的相同位置,它们驻留在不同的文件夹中。在调用的批处理文件中传递相对路径

zipjs.bat驻留在\batch的start.bat驻留在\odt

的文件,它是作为参数被传递到zipjs.bat驻留在相同的文件夹开始。蝙蝠。

这种方式(使用绝对路径-source)一切工作正常:

call ..\batch\zipjs.bat unzip -source C:\Users\rmrd001\git\xslt-framework\Product\dita\transformations\paragraphs\odt\source.odt.zip -destination .\MyDir -keep yes -force no 
pause 

以上的-source采用绝对路径。但是当我用相对的方式改变绝对路径时,像这样:-source .\source.odt.zip它不起作用。我试着用相对于start.bat的路径 - .\source.odt.zip和相对于zipjs.bat - ..\odt\source.odt.zip,但没有成功。

+0

可能重复的答案[从相对路径和/或文件名解析绝对路径](http://stackoverflow.com/questions/1645843/resolve-absolute-path-from-relative-path-and-or-file-name) – wOxxOm

+1

由于START.bat和你的源代码是一样的,然后就是使用批处理文件存在的目录。'%〜dp0' – Squashman

回答

1

最简单的方法可能是使用%~dp0,它会扩展到start.bat的路径,如Squashman建议的以反斜杠结尾。

我建议还清理临时文件的目录进行解压缩为zipjs.bat目前更新的2015年3月17日最后一次通过npocmaka不这样做后,看到How to write a batch file that can unzip a file into a new folder with the same name?

@echo off 
call ..\batch\zipjs.bat unzip -source "%~dp0source.odt.zip" -destination .\MyDir -keep yes -force no 
for /F "delims=" %%D in ('dir /AD /B "%TEMP%\*source.odt.zip" 2^>nul') do (
    %SystemRoot%\System32\attrib.exe -h "%TEMP%\%%~D" 
    rd /S /Q "%TEMP%\%%~D" 2>nul 
) 
pause 
+0

运行for循环之后,保留一个名为'nul)'的文件,并且没有进一步的命令被执行到bat文件中。 –

+0

你确定你使用的代码是完全正确的吗?你有试过这7条线吗?我想你使用一个稍微不同的批处理文件,将命令__dir__可能的错误信息重定向到设备__nul__错误,导致将输出重定向到文件'nul''。请检查您的代码并将其与我的代码字符进行比较。 – Mofi

相关问题