从原始字符串批处理脚本中查找多个字符串匹配项
Find multiple string matches from the original string batch script
我目前在一个文件夹中有一个文件列表,我需要遍历这些文件并排除与模式匹配的非生产文件。我如何在批处理命令中搜索多个字符串?
例如我有文件
- QA_test_1.txt
- QA_809_test.txt
- dev_93439_sd.txt
- stg_abc_sldkf_df.txt
- prod_4845_sdfd.txt
- prod_998_sdfd.txt
- live_lskd_sd3434.txt
- xyz_sdfdf_s3rer.txt
我需要从上面的列表中排除所有包含单词“dev”和 QA“Stg”的文件,并生成不含它们的文件列表 - 即
- prod_4845_sdfd.txt
- prod_998_sdfd.txt
- live_lskd_sd3434.txt
- xyz_sdfdf_s3rer.txt
问题是 - 我找不到任何可以对多个字符串执行等效 grep 的批处理命令。 FindStr 只对一个字符串执行此操作,因此我无法使其正常工作。这是我的代码
set i=0
for /F "delims=" %%a in ('dir /B /A /S Path *.txt') do (
set /A i+=1
rem put the file names in array
set list[!i!]=%%~na
rem try to find the file names
echo %%~na|find "dev" or "qa" or "stg" >nul
if errorlevel 1 (echo notfound) else (echo found %%~na )
)
谢谢大家的回复。
我能够通过以下方式做到这一点
echo %%~na|findstr /i /v "dev QA Stg" >nul
if errorlevel 1 (echo not found %%~na) else (echo %%~na>>newfile.txt)
我目前在一个文件夹中有一个文件列表,我需要遍历这些文件并排除与模式匹配的非生产文件。我如何在批处理命令中搜索多个字符串?
例如我有文件
- QA_test_1.txt
- QA_809_test.txt
- dev_93439_sd.txt
- stg_abc_sldkf_df.txt
- prod_4845_sdfd.txt
- prod_998_sdfd.txt
- live_lskd_sd3434.txt
- xyz_sdfdf_s3rer.txt
我需要从上面的列表中排除所有包含单词“dev”和 QA“Stg”的文件,并生成不含它们的文件列表 - 即
- prod_4845_sdfd.txt
- prod_998_sdfd.txt
- live_lskd_sd3434.txt
- xyz_sdfdf_s3rer.txt
问题是 - 我找不到任何可以对多个字符串执行等效 grep 的批处理命令。 FindStr 只对一个字符串执行此操作,因此我无法使其正常工作。这是我的代码
set i=0
for /F "delims=" %%a in ('dir /B /A /S Path *.txt') do (
set /A i+=1
rem put the file names in array
set list[!i!]=%%~na
rem try to find the file names
echo %%~na|find "dev" or "qa" or "stg" >nul
if errorlevel 1 (echo notfound) else (echo found %%~na )
)
谢谢大家的回复。 我能够通过以下方式做到这一点
echo %%~na|findstr /i /v "dev QA Stg" >nul
if errorlevel 1 (echo not found %%~na) else (echo %%~na>>newfile.txt)