答案1
@echo off
>"%temp%\tmp_file.txt" (
echo\WORD,1234,A,B,C
type "C:\123\123\file.txt"|find/v "%:^)"
) && move /y "%temp%\tmp_file.txt" "C:\123\123\file.txt"
1.回显字符串并重定向(>
)到具有唯一名称的临时文件:
echo\WORD,1234,A,B,C>"%temp%\tmp_file.txt"
2.用于type file.txt|find "not existing string"
列出文件中的所有行(包括空白行)
type "C:\123\123\file.txt"|find/v "_string_not_exist_in_file"
3.在块中使用命令()
,在合并文件的输出中按照运算符进行操作&&
,如果所有命令return 0
(执行成功),则可以将新文件移动到目标文件(覆盖/y
旧内容file.txt
):
(...commands..) && move /y "%temp%\tmp_file.txt" "C:\123\123\file.txt"
观察:1这个问题使用一个通用字符串,对于真正的字符串,您可以检查是否有人需要转义:
WORD,1234,A,B,C special characters: ^| ^& ^> ^< ^^ %% ^{ ^}
观察:2我的英语很糟糕,抱歉!也许我没有理解这些行的应用,可能需要进行一些修改,请使用注释...
set line=!line::=:00! ==> variable line is not defined set xname=%xname:s=s% ==> variable xname is not defined pushd C:\123\123 ==> replace to cd /d "C:\123\123" // use "" ==> "path"
观察:3。具体来说pushd C:\123\123
,由于路径已知,您可以在命令中直接使用它,或者将其替换为cd /d "drive:your_path_folder"
:
:: replace:
pushd C:\123\123:: to: cd /d "C:\123\123" @echo off cd /d "C:\123\123" >"%temp%\tmp_file.txt" ( echo\WORD,1234,A,B,C type "\file.txt"|find/v "%:^)" ) && move /y "%temp%\tmp_file.txt" "file.txt"