Windows 如何修复此批处理文件,以便在执行时正确查找所有路径?

Windows 如何修复此批处理文件,以便在执行时正确查找所有路径?,windows,windows-7,batch-file,windows-installer,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\<ap

我编写这个脚本是为了首先安装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>

所有操作都失败,无法使用windows.bat文件运行。我做错了什么?

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

cd c:\users\username\downloads
或者,您可以执行以下操作:

cd /d %~p0

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

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

因此,使用@MikeNakis'有关获取批处理文件中当前路径的信息,尝试以下方法(稍微调整一下,仅对目录使用%%dp0,因此不包括批处理文件名):


确保您位于正确的开始目录中

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

作为批处理文件的第一行

您是从命令行上的C:\Users\Username\Downloads\目录执行批处理文件,还是仅从运行提示符执行批处理文件?听起来它的工作文件夹不正确。@NickShaw:那个目录是的。命令行和双击。我如何知道什么是XYZ默认下载目录路径?或者用户在哪里下载的(不是我,我是为最终用户制作的,因为我的案例是在该路径中手动下载的)。这就是我扩展答案的原因。%~p0是你问题的解决方案。你是对的。忘了这件事。我将为将来可能偶然发现它的任何人更新答案。谢谢
msiexec /I "%~dp0\package\files.msi" /qb
CD /d c:\users\%USERNAME%\downloads