Batch file 批处理文件:txt文件中的行包含xxx,然后执行一项操作,否则不执行任何操作
我正在尝试将修改设置为文本文件 现在,我有一些修改,总是适用 在进行更改之前,我希望设置一个条件,即如果一行包含xxxx,则不执行任何其他操作来进行更改。我把代码贴在这里Batch file 批处理文件:txt文件中的行包含xxx,然后执行一项操作,否则不执行任何操作,batch-file,cmd,Batch File,Cmd,我正在尝试将修改设置为文本文件 现在,我有一些修改,总是适用 在进行更改之前,我希望设置一个条件,即如果一行包含xxxx,则不执行任何其他操作来进行更改。我把代码贴在这里 setlocal enabledelayedexpansion 设置“TMPFILE=%TEMP%\file\u converter\u%RANDOM%.tmp” 如果存在“%TMPFILE%”(删除“%TMPFILE%”) 对于/f“delims=”%(economic_changes.txt)中的%%a( 设置“s=”%%
setlocal enabledelayedexpansion
设置“TMPFILE=%TEMP%\file\u converter\u%RANDOM%.tmp”
如果存在“%TMPFILE%”(删除“%TMPFILE%”)
对于/f“delims=”%(economic_changes.txt)中的%%a(
设置“s=”%%a
设置“s=!s:;=!”
设置“s=!s:-=-;!”
设置“s=!s:-=-!”
设置“s=!s:-;-=-;-!”
设置“s=!s:-=%!”
设置“s=!s:=%!”
设置“s=!s:;=';'%!”
设置“s=!s:;“”;'=;%!”
echo>>%TMPFILE%!s!
)
复制/Y“%TMPFILE%”%USERPROFILE%\Desktop\Economic\u Folder\Economic\u changes.txt
如果存在“%TMPFILE%”(删除“%TMPFILE%”)
插入一个回音以查找失败时的条件执行|
@Echo off
Setlocal enabledelayedexpansion
SET "TMPFILE=%TEMP%\file_converter_%RANDOM%.tmp"
IF EXIST "%TMPFILE%" (DEL "%TMPFILE%")
for /f "delims=" %%a in (economic_changes.txt) do (
Echo:%%a|find "xxx" >NUL 2>&1||(
SET "s='%%a "
SET "s=!s:;= ! "
SET "s=!s:- =-;;! "
SET "s=!s: -=-! "
SET "s=!s:-;;-=-;-! "
SET "s=!s:-=%!"
SET "s=!s:_= %!"
SET "s=!s:;=';'%!"
SET "s=!s:;'';'=;;%!"
)
echo>>"%TMPFILE% !s!
)
COPY /Y "%TMPFILE%" "%USERPROFILE%\Desktop\Economic_Folder\economic_changes.txt"
IF EXIST "%TMPFILE%" (DEL "%TMPFILE%")
正如您在评论中所述,如果一行包含字符串匹配,您希望进行更改,那么您需要使用
&&
而不是|
。您现在提供了一个指示(尽管可能很差),您的文件内容,这让我对您的字符串匹配进行了最佳猜测(它不是000
或xxx
)
For/F UseBackDelims^=^EOL^=%%%a在(“economic_changes.txt”)中执行(
Echo=%%a | Findstr/IRC:[-\;]state[-\;]>Nul 2>&1&&(
设置…
如果您只查找包含该字符串的行,即删除所有不包含该字符串的行(而不是忽略它们),则只需使用此命令来提取它们
For/F“Delims=“%%A In('Findstr/IRC:[-\;]state[-\;]”“economic\u changes.txt”
)一定要…
或者,您可以先将它们全部提取到一个新文件中,正如我在您之前提出的问题中建议的那样,然后将其忽略
Findstr/IRC:[-\;]state[-\;]“economic\u changes.txt”>“NewFile.txt”
在上述所有情况下,如果字符串应该是注释中显示的行中的第一个,则可以使用
Findstr/BIRC:[-\;]state[-\;]进一步提高准确性“
,本质上是相同的。您需要准确地向我们显示匹配字符串。我的数据是这样的:-state;of;prot-;-201705-;-ID1-;-sell-;-4-;-PROD;2-;;如果字符串包含state,则需要进行更改,如果不是什么都不做的话。谢谢您。”