在被调用的批处理文件中传递相对路径

时间:2015-11-17 15:52:11

标签: windows batch-file cmd

我需要调用 zipjs.bat 文件,该文件将路径作为参数。 我通过名为 start.bat 的另一个.bat文件调用.bat文件。 这两个文件在文件系统中不在同一个位置,它们位于不同的文件夹中。

zipjs.bat 位于\batch start.bat 位于\odt

作为参数传递给 zipjs.bat 的文件与start.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的路径而没有成功。

1 个答案:

答案 0 :(得分:1)

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

我建议另外清理目录中的临时文件,因为zipjs.bat上次正在更新的npocmaka上次更新时间为{03}} How to write a batch file that can unzip a file into a new folder with the same name?没有这样做,请参阅{{ 3}}

@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