Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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 批处理文件:txt文件中的行包含xxx,然后执行一项操作,否则不执行任何操作_Batch File_Cmd - Fatal编程技术网

Batch file 批处理文件:txt文件中的行包含xxx,然后执行一项操作,否则不执行任何操作

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=”%%

我正在尝试将修改设置为文本文件

现在,我有一些修改,总是适用

在进行更改之前,我希望设置一个条件,即如果一行包含xxxx,则不执行任何其他操作来进行更改。我把代码贴在这里

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,则需要进行更改,如果不是什么都不做的话。谢谢您。”