批量 - 用于/ F与IF /文件/比较

时间:2017-03-23 16:54:22

标签: batch-file if-statement for-loop comparison

逗人,

我希望你能帮助我,因为我失去了信心。 让我告诉你我做了什么,然后解释我需要做什么。

@echo off    
echo "Which Site do you want to check?"
set /p ans="Site: "
echo.

for /f "tokens=1,2,3 delims=," %%A IN (animals.csv) DO if %%A==%ANS% (ping %%B AND ping %%C)
echo.
pause
echo.
cls
goto menu
  1. 用户应该放置一些将存储在ANS变量中的动物名称。
  2. 脚本应该检查animals.csv为该动物分配了哪些IP地址。
  3. 匹配后,脚本应在下一列中ping IP地址,以便用户可以看到结果。 PS:所有这两个文件都在同一个文件夹中。
  4. 问题是animals.txt有3列和很多记录。 我能够让脚本工作直到比较变量,然后我就停止了工作。

    让我们说动物文件看起来像这样:

    cat,111.111.111.111,122.122.122.122 
    dog,222.222.222.222,233.233.233.233 
    horse,333.333.333.333,344.344.344.344
    

    帮助我,因为我卡住了,我也不知道怎么做。

1 个答案:

答案 0 :(得分:1)

当您使用AND替换&时,您的脚本有效(请参阅SS64.com

但是,让我建议一个略有不同的逻辑:

@echo off    
echo "Which Site do you want to check?"
set /p ans="Site: "
echo.

for /f "tokens=1,2,3 delims=," %%A IN ('type animals.csv^|findstr /b "%ans%,"') DO (
  ping %%B
  ping %%C
)
echo.
pause

findstr参数/b表示"字符串应以"开头 - 阻止maddog被识别为dog 搜索字符串中的尾随逗号会阻止catfish被识别为cat 您可能希望添加/i以使搜索不区分大小写(catCat将被识别)。