auto=1
我可以通过设置来安装该软件install.inf
,然后使用以下脚本:
@echo off
for /F "tokens=2 delims=<>" %%i in ('type test.xml ^|find "<install>"') do (
set setup=%%i
echo installing %installer% >>log.txt
%setup%
)
@echo on
XML 配置文件(test.xml
):
<?xml version="1.0" encoding="UTF-16"?>
<install>C:\Users\UIDW6331\Desktop\tcm801x64\INSTALL.EXE</install>
<install>C:\Users\UIDW6331\Desktop\tcm801x64\INSTALL.EXE</install>
安装成功了,但是我想将其安装在特定的目标目录中。我该怎么做?
另外,当我使用如下开关时:
start /w %setup% /norestart /silent
或者
%setup% /passive /norestart
我收到以下错误:
未找到安装信息文件。您需要在运行 install.exe 之前解压整个存档。安装已中止
如何修复此问题?
答案1
我不知道您直接问的问题。但是您的批处理文件无法按写的那样工作。
您不能%setup%
在设置值的同一代码块(FOR 循环)中使用,因为整个块在一次传递中解析,并且值在解析之前会扩展。值会正确设置,但扩展的值将是您进入循环之前存在的值。
第一次运行批处理脚本时,setup
变量尚未定义,因此完全失败。值已设置,但循环无法看到它。脚本没有setlocal
,因此脚本终止时会保留设置的最后一个值。下次运行脚本时,它将使用 XML 文件每一行上上次运行时保留的值。
我相信您可以通过替换call %%setup%%
来解决这个特殊问题%setup%
。
编辑
或者更好的是,简单地setup
完全消除变量并%%i
直接使用:
for /F "tokens=2 delims=<>" %%i in ('type test.xml ^|find "<install>"') do (
echo installing %installer% >>log.txt
%%i
)
注意 - 我不明白这个installer
值从何而来。我假设你知道自己在做什么,但我觉得这看起来很奇怪。