在 BAT 文本文件的开头添加一行

在 BAT 文本文件的开头添加一行

有一个代码将该行添加"WORD, 1234, A, B, C"到文本文件的开头。

执行代码后,""文本文件末尾会添加一个额外的字符。

请帮我修复代码,以便""文本文件末尾现在有这个字符。

set line=!line::=:00!
    
@echo off

pushd C:\123\123
    
for %%a in (file.txt) do (
     >>$ echo WORD,1234,A,B,C
     >nul (copy $+"%%a"& move $ "%%a")
   )
 
set xname=%xname:s=s%
  
exit /b

在 Notepad++ 中你会看到:在此处输入图片描述

答案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"

Windows 命令解释器 cmd.exe 如何解析脚本

操作方法:在 Windows 命令行中转义字符、分隔符和引号

相关内容