我试图在许多地方找到解决方案,但找不到具体答案。
我正在创建一个批处理脚本。
以下是我到目前为止的代码
@echo off
SETLOCAL EnableDelayedExpansion
cls
for /f "delims=" %%a in ('rasdial EVDO cdma cdma') do set "ras=!ras! %%a"
findstr /C:"%ras%" "already"
if %errorlevel% == 0
(
echo "it says he found the word already"
)
else
(
echo "it says he couldn't find the word already"
)
输出 :
FINDSTR: Cannot open already
The syntax of the command is incorrect.
我正在尝试在变量“ras”中找到“已经”一词,
问题似乎出在
findstr/C:“%ras%”“已经”
我尝试使用
findstr“%ras%”“已经”
但这也不起作用。
最佳答案
您的代码中有两个问题。
第一个是findstr
的工作方式。对于其输入中的每一行,它都会检查该行是否包含(或不包含)所指示的文字或正则表达式。可以从文件或标准输入流中读取将要测试的输入行,但不能从命令行中的参数读取。将线通过管道传递到findstr
命令的最简单方法
echo %ras% | findstr /c:"already" >nul
第二个问题是
if
命令的编写方式。开头括号必须与条件在同一行,else
子句必须与第一个结束括号在同一行,else
子句中的开头括号必须与else
子句在同一行(请参阅here)if condition (
code
) else (
code
)
但是要测试变量中是否存在字符串,这样做更容易
if "%ras%"=="%ras:already=%" (
echo already not found
) else (
echo already found
)
这将测试变量中的值是否等于,等于用
already
字符串替换为空的相同值。有关变量编辑/替换的信息,请查看here。
关于batch-file - 批处理程序在变量中查找字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26942374/