我有一个批处理脚本会做这些事情:
这是我的批处理脚本:
for /F "usebackq tokens=12 delims= " %%i IN (`ipconfig /all ^| find /i "physical address"`) DO if exist *%%i.xml (setup.exe /file:config\*%%i.xml)
问题是,当我使用通配符“* %% i.xml”时,我无法获得if条件中的值。
- >在这种情况下,如何将匹配的“ * %% i.xml ”XML文件传递给setup.exe?
答案 0 :(得分:0)
如果我将tokens=12
更改为tokens=10
(德语版Windows),则代码适用于我。
但是怎么样:
@echo off
setlocal enabledelayedexpansion
for /F "usebackq tokens=2 delims=:" %%i IN (`ipconfig /all ^| findstr "..-..-..-"`) DO (
set file=*%%i.xml
set file=!file: =!
for %%a in (!file!) do echo %%a
)
将:
作为分隔符。只有“问题”是有一个领先的空间,但这很容易解决。 (字符串“物理地址”在其他语言中以长度变化,因此如果用空格分隔,则令牌的数量会有所不同)
for %%a
行是额外的循环,foxidrive建议。
注意:将find /i "physical address"
替换为findstr "..-..-..-"
会使其成为与语言无关的。