批处理脚本:IF同事未按预期工作

时间:2013-02-25 16:52:27

标签: windows scripting batch-file

FOR /F "tokens=*" %%A IN ('gpresult /r ^| FIND "string"') DO SET Result=%%A  
if '%Result%'=='this is where the word string shows up'  
echo Success > %homepath%\Desktop\Success.txt  

即使字符串匹配,实际上也不会将文件写入桌面。

3 个答案:

答案 0 :(得分:0)

你需要

setlocal enabledelayedexpansion

位于批处理文件的顶部,然后代替

'%Result%'=='this is where the word string shows up'

你需要

'!Result!'=='this is where the word string shows up'

- 注意!代替 %。否则,在首次解析批处理文件时会扩展%Result%,此时Result变量不包含任何内容。这些更改意味着它会延迟解析它直到它在for循环中,此时它将被适当地填充。

答案 1 :(得分:0)

尝试在代码中使用setlocal enabledelayedexpansion。然后使用“!variable!”访问变量。而不是“%variable%”。 还要确保%% A是否正在获取所需的令牌。

答案 2 :(得分:0)

echo应与if

位于同一行
if '%Result%'=='this is where the word string shows up' echo Success > %homepath%\Desktop\Success.txt

或在括号周围加上括号:

if '%Result%'=='this is where the word string shows up' (
    echo Success > %homepath%\Desktop\Success.txt
)