批处理文件:相对路径错误,从当前目录向上一级

时间:2013-06-06 11:23:37

标签: windows batch-file path

我是批处理脚本编程的新手。如果我给出相对路径,则在执行批处理文件时获取错误。 我有以下文件夹结构

Script folder - C:\batch\script\ServiceRegister.bat
Bin path - C:\batch\bin\ERecruitGenerateReportsWindowsService.exe

ServiceRegister.bat批处理文件 -

%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe %~dp0%~1\bin\ERecruitGenerateReportsWindowsService.exe

当我执行ServiceRegister.bat文件时,我收到错误:

Exception occurred while initializing the installation:
System.IO.FileNotFoundException: Could not load file or assembly 'file:///C:\batch\script\bin\ERecruitGenerateReportsWindowsService.exe' or one of its dependencies. The system cannot find the file specified.

我正在使用“%~dp0%~1”在目录中向上升级,但仍然会获得当前路径。

%~dp0%~1 - C:\batch\script\  

我需要C:\ batch \ path。我怎么能走这条路呢? 它工作正常如果我给出绝对路径 -

%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe C:\batch\bin\ERecruitGenerateReportsWindowsService.exe

1 个答案:

答案 0 :(得分:10)

您尝试使用%~1在目录结构中上升一级是创造性的,语法完全无效。正确的语法也很简单 - 使用..\

由于\%~dp0结尾,因此不需要提前\

%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe %~dp0..\bin\ERecruitGenerateReportsWindowsService.exe