Windows 如何修复此批处理文件,以便在执行时正确查找所有路径?
我编写这个脚本是为了首先安装msi,然后将我的应用程序复制到一个临时目录。但都没有起作用。执行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
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