我有一个带有一些文件名的file1.txt。 我想从文件中读取文件名是否包含" xyz"我需要运行一些命令,如果没有其他命令 无法做到这一点,需要你的帮助,尝试了很多方法,但无法弄清楚 这是我尝试过的示例代码:
@echo off
setlocal EnableDelayedExpansion
for /F "tokens=1,2,3 delims=" %%i in (file1.txt) do (
set f=%%i
set z=XYZ
echo !f! >>test.txt
if /i "!f!" == "!z!" (
echo matched >> test.txt
) else (
echo nomatch >> test.txt
)
)
答案 0 :(得分:2)
要比较字符串是否包含另一个字符串,您可以这样做(请注意,这不区分大小写,因为基础sub-string expansion syntax本身不区分大小写):
if "!STRING!"=="!STRING:%SUB%=!" echo Sub-string "%SUB%" NOT found within "!STRING!"
以上方法已在您的脚本中实现:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem // Define constants here:
set "_INFILE=file1.txt"
set "_OUTFILE=test.txt"
set "_SUBSTR=XYZ"
>> "%_OUTFILE%" (
for /F "usebackq tokens=1-3 delims=" %%L in ("%_INFILE%") do (
set "LINE=%%L"
setlocal EnableDelayedExpansion
echo(!LINE!
if not "!LINE!"=="!LINE:%_SUBSTR%=!" (
echo matched
) else (
echo nomatch
)
endlocal
)
)
endlocal
exit /B
此外,我改进了以下内容:
>>
替换为>
以覆盖现有文件而不是附加到该文件; _SUBSTR
中的字符串不得包含此类字符串; set
语法; 或者,您可以使用find
command,它仅返回file1.txt
中包含%SUB%
中子字符串的那些行;添加/I
选项以进行不区分大小写的搜索:
find "%SUB%" "file1.txt"