Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 检查cmd/bat脚本中的字符串中是否存在子字符串_Batch File_Cmd - Fatal编程技术网

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)
,在正确的行上有括号,因此没有显示问题!我怀疑他们没有在问题正文中提供准确的信息。我解释
我尝试过这种组合
与下面的
代码片段不起作用
相比,第一个代码起作用,后者不起作用。