如何修复此BATCH文件,以便在执行时正确找到所有路径?

时间:2012-01-01 10:27:03

标签: windows windows-7 batch-file windows-installer

我编写此脚本首先安装msi,然后将我的应用程序复制到临时目录。但没有一个工作。执行windows.bat文件时,找不到package\dist目录

1)用户下载并执行了具有以下树的windows.bat文件:

C:\Users\Username\Downloads\windows.bat
C:\Users\Username\Downloads\package\<.msi files>
C:\Users\Username\Downloads\dist\<application files>

2)windows.bat包含以下内容:

msiexec /I "package\files.msi" /qb
set temp=%TEMP%
echo %temp%
xcopy dist %temp% /e /h /R

全部失败,与windows.bat文件一起运行。我做错了什么?

3 个答案:

答案 0 :(得分:1)

您需要将以下行添加到批处理文件的开头:

cd c:\users\username\downloads

或者,您可以这样做:

cd /d %~p0

%~p0将取参数#0(批处理文件的完整路径)并从中提取路径。如果给定路径包含驱动器规范,/ d选项将确保也更改当前驱动器。

答案 1 :(得分:1)

好的,我想我知道什么是错的。 msiexec.exe从Windows系统文件夹(例如C:\ Windows \ Systeme32)运行,因此当您传递要安装的msi文件的名称时,您需要包含它的完整路径。

所以,使用@MikeNakis'关于获取批处理文件中当前路径的信息,试试这个(稍微调整一下只使用%~dp0目录,所以不包括批处理文件名):

msiexec /I "%~dp0\package\files.msi" /qb

答案 2 :(得分:1)

确保您位于正确的目录中,以

开头
CD /d c:\users\%USERNAME%\downloads

作为批处理文件中的第一行