Sid*_*024 9 command-line batch-file command-prompt findstr
我试图在很多地方找到解决方案,但找不到具体的答案.
我正在创建一个批处理脚本.以下是我目前的代码
@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"
)
Run Code Online (Sandbox Code Playgroud)
输出:
FINDSTR: Cannot open already
The syntax of the command is incorrect.
Run Code Online (Sandbox Code Playgroud)
我试图在变量'ras'中找到'已经'这个词,
问题似乎是在 findstr/C:"%ras%""已经"
我尝试使用 findstr"%ras%""已经" 但这也不起作用.
MC *_* ND 10
您的代码中存在两个问题.
第一个是如何findstr工作.对于其输入中的每一行,它检查该行是否包含(或不包含)指示的文字或正则表达式.将要测试的输入线可以从文件或从标准输入流readed,但不能从在命令行参数.它将线路输入findstr命令的最简单方法
echo %ras% | findstr /c:"already" >nul
Run Code Online (Sandbox Code Playgroud)
第二个问题是如何if编写命令.左括号必须与条件相同,else条子必须与第一个右括号else在同一行,并且else子句中的左括号必须与该子句在同一行(见此处)
if condition (
code
) else (
code
)
Run Code Online (Sandbox Code Playgroud)
但是为了测试变量中字符串的存在,它更容易
if "%ras%"=="%ras:already=%" (
echo already not found
) else (
echo already found
)
Run Code Online (Sandbox Code Playgroud)
这将测试变量中的值是否等于相同的值,并且字符串already被替换为nothing.
有关变量编辑/替换的信息,请在此处查看.
“命令的语法不正确。” 报告“else”,它在批处理命令行中不存在。
为了
findstr /c:"str" file
Run Code Online (Sandbox Code Playgroud)
这里str是要搜索的文字,file是要执行搜索的文件名。所以这不符合你的要求。
我认为以下内容就是您所需要的。
rasdial EVDO cdma cdma | findstr already > NUL
if %errorlevel% EQU 0 (
echo "it says he found the word already"
)
if %errorlevel% NEQ 0 (
echo "it says he couldn't find the word already"
)
Run Code Online (Sandbox Code Playgroud)