Batch file 检查cmd/bat脚本中的字符串中是否存在子字符串
我想检查Batch file 检查cmd/bat脚本中的字符串中是否存在子字符串,batch-file,cmd,Batch File,Cmd,我想检查count是否存在于mycountry中,然后根据需要执行一些操作 我的代码片段: rem @ECHO OFF cls SET FILE="mycountry" 如果为true,我想运行3条语句,如果为false,我想运行3条其他语句 我尝试过这种组合: Echo.%FILE% | findstr /C:"count">nul && (Echo.TRUE) || (Echo.FALSE) 但是如果条件为真,如何编写多个语句呢?我不想使用任何标志变量 下面的代码段
count
是否存在于mycountry
中,然后根据需要执行一些操作
我的代码片段:
rem @ECHO OFF
cls
SET FILE="mycountry"
如果为true,我想运行3条语句,如果为false,我想运行3条其他语句
我尝试过这种组合:
Echo.%FILE% | findstr /C:"count">nul && (Echo.TRUE) || (Echo.FALSE)
但是如果条件为真,如何编写多个语句呢?我不想使用任何标志变量
下面的代码段不工作
Echo.%FILE% | findstr /C:"count">nul &&
(
Echo.TRUE
echo "ran correct."
)
|| (Echo.FALSE)
您可以将该值与if/else组合使用。请参见下面的示例:
REM @echo off
cls
SET FILE="mycountry"
SET STR="TEST"
findstr %STR% %FILE% >nul
if %errorlevel% equ 1 (
goto searchError
) else (
goto searchSucces
)
:searchSucces
echo String %STR% found in file %FILE%
pause
exit
:searchError
echo String %STR% not found in file %FILE%
pause
exit
您可以将该值与if/else组合使用。请参见下面的示例:
REM @echo off
cls
SET FILE="mycountry"
SET STR="TEST"
findstr %STR% %FILE% >nul
if %errorlevel% equ 1 (
goto searchError
) else (
goto searchSucces
)
:searchSucces
echo String %STR% found in file %FILE%
pause
exit
:searchError
echo String %STR% not found in file %FILE%
pause
exit
您的代码(集成到批处理文件中)似乎能按预期工作:
@Echo关闭
设置“文件=”
设置/P“文件=输入字符串:”
如果未定义文件退出/B
Echo.%FILE%| findstr/C:“计数”>num&&&(Echo.TRUE)|(Echo.FALSE)
暂停
此外,以下两种方法似乎都能按预期工作:
使用Echo
和FindStr
(与您的代码一样):
@Echo关闭
设置“文件=”
设置/P“文件=输入字符串:”
Echo=%FILE%| FindStr/IC:“计数”>num2>&1&&(Echo TRUE
Echo运行正常。
超时3/NoBreak>Nul
Echo仍在运行!)| | Echo错误
暂停
使用变量替换:
@Echo关闭
设置“文件=”
设置/P“文件=输入字符串:”
If/I“%FILE:count=%”=“FILE%”(Echo FALSE)Else(Echo TRUE)
Echo运行正常。
超时3/NoBreak>Nul
Echo仍在运行!)
暂停
如果上面的示例对您不起作用,您应该编辑您的问题,以包括您在真实场景中使用的实际代码和字符串。我们无法修复一些我们看不到的问题,特别是如果您没有完全解释该问题,(代码段不起作用
仅是一条语句,不是一种解释)。您的代码(集成到批处理文件中)似乎可以正常工作:
@Echo关闭
设置“文件=”
设置/P“文件=输入字符串:”
如果未定义文件退出/B
Echo.%FILE%| findstr/C:“计数”>num&&&(Echo.TRUE)|(Echo.FALSE)
暂停
此外,以下两种方法似乎都能按预期工作:
使用Echo
和FindStr
(与您的代码一样):
@Echo关闭
设置“文件=”
设置/P“文件=输入字符串:”
Echo=%FILE%| FindStr/IC:“计数”>num2>&1&&(Echo TRUE
Echo运行正常。
超时3/NoBreak>Nul
Echo仍在运行!)| | Echo错误
暂停
使用变量替换:
@Echo关闭
设置“文件=”
设置/P“文件=输入字符串:”
If/I“%FILE:count=%”=“FILE%”(Echo FALSE)Else(Echo TRUE)
Echo运行正常。
超时3/NoBreak>Nul
Echo仍在运行!)
暂停
如果上面的示例对您不起作用,您应该编辑您的问题,以包括您在真实场景中使用的实际代码和字符串。我们无法修复一些我们看不到的问题,尤其是如果您没有完全解释这个问题,(
代码片段不起作用
只是一个语句,不是一个解释).是否要检查变量或文本文件中是否存在子字符串?代码段无法工作,因为代码块的左括号必须与条件执行&(…
以及)|在同一行上(…
BTW这里没关系,但是不要在管道符号Echo.%FILE%|findstr
Correct@LotPings前面插入空格,但是OP也声明他们已经“尝试了这种组合”,Echo.%FILE%|findstr/C:“count”>num&(Echo.TRUE)|(Echo.FALSE)
,在正确的行上有括号,因此没有显示问题!我怀疑他们没有在他们的问题正文中提供准确的信息。我解释我尝试过这种组合
与下面的代码段不起作用
第一个有效,后者无效。是否要检查ubstring存在于变量或文本文件中?代码段无法工作,因为代码块的左括号必须与条件执行&(…
和)|在同一行上(…
BTW这里没关系,但是不要在管道符号Echo.%FILE%|findstr
Correct@LotPings前面插入空格,但是OP也声明他们已经“尝试了这种组合”,Echo.%FILE%|findstr/C:“count”>num&(Echo.TRUE)|(Echo.FALSE)
,在正确的行上有括号,因此没有显示问题!我怀疑他们没有在问题正文中提供准确的信息。我解释我尝试过这种组合
与下面的代码片段不起作用
相比,第一个代码起作用,后者不起作用。