.bat脚本奇怪的问题

我有一个.bat脚本,其中安装3个软件。 当我打开一个提升命令Promt,浏览到该文件,并运行它一切工作正常。 当我直接运行.cmd(使用Windows 7中的“以pipe理员身份运行”时,没有任何反应。

脚本如下:

REM ECHO OFF

ECHO安装Bonjour,请稍候!

msiexec.exe /我reqs \ Bonjour64.msi /安静

ECHO安装DirectX 9.0C Redist,请稍候

reqs \ dxsetup.exe / silent

ECHO安装Airserver,请稍候。

msiexec.exe /我reqs \ AirServer-1.9.1.msi / qn TRANSFORMS = PIDKEY.mst

任何帮助将不胜感激。

我的猜测是,通过“以pipe理员身份运行”启动时,脚本是从另一个工作目录启动的。 所以你的相对path是错误的。 如果你正常启动一个cmd,你应该在你的用户configuration文件中。 如果通过“Run As”以pipe理员身份启动cmd,则通常会以“C:\ Windows \ System32”结尾。

尝试这个:

rem ECHO OFF ECHO Installing Bonjour , please wait! msiexec.exe /i "%~dp0reqs\Bonjour64.msi" /quiet ECHO Installing DirectX 9.0C Redist , please wait "%~dp0reqs\dxsetup.exe" /silent ECHO Installing Airserver , please wait. msiexec.exe /i "%~dp0reqs\AirServer-1.9.1.msi" /qn TRANSFORMS="%~dp0PIDKEY.mst" 

%〜dp0被parsing到脚本所在的目录(加反斜杠)。