如果是条件批处理脚本,则获取变量的值

时间:2014-02-19 14:48:30

标签: batch-file for-loop token wildcard

我有一个批处理脚本会做这些事情:

  1. 列出所有MAC
  2. 检查当前文件夹是否包含“blah-blah- [MAC] .xml”等XML文件
  3. 如果是 - >执行setup.exe并将该XML文件作为参数传递(XML文件位于文件夹名称“config”)
  4. 这是我的批处理脚本:

    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?

1 个答案:

答案 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 "..-..-..-"会使其成为与语言无关的。