我正在从2个批处理文件安装3个msi文件。第一个批处理文件找到msi位置,并将日志写入我所需的位置
pushd %~dp0..\%VERSION%\MSIFOLDER\
msiexec /i "InstallMe.msi" /qn TARGETDIR="%x32%" TARGET64DIR="%x64%" /L*v "%~dp0Scripts\Logs\InstallMe.log"
msiexec /i "InstallMe2.msi" /qn TARGETDIR="%x32%" TARGET64DIR="%x64%" /L*v "%~dp0Scripts\Logs\InstallMe2.log"
popd
第二个批处理文件找到msi位置(与batch1相同)并将日志写入我所需的位置(与batch1相同的位置)
pushd %~dp0..\%VERSION%\MSIFOLDER\
msiexec /i "InstallMe3.msi" /qn TARGETDIR="%Target_PATH%\InstallMe3" /L*v "%~dp0..\..\BatchFileFolder\Scripts\Logs\InstallMe3.log"
popd
但是,请注意批处理1和批处理2的日志文件路径不同
由于日志%~dp0
仍指向批处理文件所在的位置,因此似乎在batch1中压入并没有将im推入的路径设置为当前工作目录。
在batch2中,它能按我预期的那样工作...我真的不知如何处理,基本上相同的命令具有不同的行为,无法找出导致它的原因。
在两个文件的顶部,我都有SETLOCAL EnableDelayedExpansion
和
SETLOCAL EnableExtensions
值得一提的另一件事是,如果从1个批处理中调用了3个MSI,则在将日志文件写入/L*v "%~dp0..\..\BatchFileFolder\Scripts\Logs\InstallMe3.log"
路径时,推送操作的行为正确,即与batch2相同。但是当我将这3个文件分成2个批处理文件时..它们的行为有所不同吗?!
重要提示:我使用推入式的原因是,我无法安装具有相对路径的msi
文件。
任何想法和帮助将不胜感激。
|
+ ContainerDir
| +---MSIFilesRootDir [%VERSION%]
| | +---MSIFilesDir [%~dp0..\%VERSION%\MSIFilesDir]
| | InstallMe1.msi
| | InstallMe2.msi
| | InstallMe3.msi
| |
| +---BatchFileFolder [%~dp0]
| | BatchFile.bat
| | \---Scripts [%~dp0Scripts]
| | \---Logs [%~dp0Scripts\Logs]
| | InstallMe1.log
| | InstallMe2.log
| | InstallMe3.log
| |
这是文件夹和文件结构
答案 0 :(得分:1)
这是否使您形象化? 我在方括号内添加了一些信息以帮助。
|
\---SomeDir [%~dp0..\..]
+---ContainerDir [%~dp0..]
| +---MSIFilesRootDir [%~dp0..\%VERSION%]
| | \---MSIFilesDir [%~dp0..\%VERSION%\MSIFilesDir]
| | InstallMe.msi [%~dp0..\%VERSION%\MSIFilesDir\InstallMe.msi]
| | InstallMe2.msi [%~dp0..\%VERSION%\MSIFilesDir\InstallMe2.msi]
| | InstallMe3.msi [%~dp0..\%VERSION%\MSIFilesDir\InstallMe3.msi]
| |
| \---BatchDir [%~dp0]
| | BatchFile.bat [%0]
| |
| \---Scripts [%~dp0Scripts]
| \---Logs [%~dp0Scripts\Logs]
| InstallMe.log [%~dp0Scripts\Logs\InstallMe.log]
| InstallMe2.log [%~dp0Scripts\Logs\InstallMe2.log]
|
\---BatchFileFolder [%~dp0..\..\BatchFileFolder]
\---Scripts [%~dp0..\..\BatchFileFolder\Scripts]
\---Logs [%~dp0..\..\BatchFileFolder\Scripts\Logs]
InstallMe3.log [%~dp0..\..\BatchFileFolder\Scripts\Logs\InstallMe3.log]
您可以使用Tree
和选项/A
和/F
来创建类似的内容,(在命令提示符下输入Tree /?
以获得使用信息)