使用批处理脚本在for循环中使用if条件

时间:2015-04-16 13:01:12

标签: batch-file dos

我有一个脚本需要迭代文件并检查条件,每当相应的值应该存储到变量并显示时它满足条件。

for /f "tokens=1,6,8 delims=    " %%D in (test.txt)  do (if %%D==01 (set x=%%I
set y=%%K)
echo %x% %y%)

有人可以帮我解决上面的代码吗?

2 个答案:

答案 0 :(得分:1)

令牌符合指定的控件(%%D),然后%%E%%F

解决方案:将%%I替换为%%E,将%%K替换为%%F

block statement(带括号的系列语句)中的

%var%是指语句解析时var的值,即检查有效性,而不是运行时,也就是说,当值通过循环操作而改变时。

要查看更改后的值,最简单的方法是将echo语句更改为

call echo %%x%% %%y%%

有关更多信息,请参阅delayed expansion主题的数百个SO回复中的任意一个。

答案 1 :(得分:0)

可以按照以下方式完成。

@echo off
setlocal enableextensions enabledelayedexpansion
for %%F in ("C:\Users\JOhn\Desktop\Check\*.txt") do SET input=%%F
for /f "tokens=1-10 delims= " %%a in (%input%) do (
if %%a==01 (
set "_y=%%f"
set "_z=%%h")
echo %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j !_y! !_z!)>>temp.txt