批处理文件可将行添加到文件夹和子文件夹中的多个.txt文件

时间:2019-05-31 07:51:31

标签: batch-file

批处理文件可将行添加到文件夹和子文件夹中的多个.txt文件中。

如果我将(* .txt)替换为(specificname.txt),则我的代码可以在特定文件上工作,但是它只能在批处理文件所在的文件夹中工作

@echo off

set "$New_line=Your text"

for %%a in (*.txt) do (

   echo %$New_line% > "New_%%a"

   type "%%a" >> "New_%%a"

   del "%%a" 2>nul

  ren "New_%%a" "%%a"

)

我可以在存在批处理文件的文件夹中使用它,但是需要扩展以在子文件夹中搜索文件

预期结果将在文件夹和子文件夹中的.txt文件中添加行

1 个答案:

答案 0 :(得分:0)

您的代码中有一些怪癖(摘自您的评论):

ren在目标部分中不支持路径-仅filename.ext。

对于for /r%%a给出了完整的文件名(驱动器,路径,名称,扩展名),因此_new%%a导致无效的FQFN(如_New_C:\folder\subfolder\file.txt

您可以使用修饰符获取Needes子字符串(在for /?中进行了解释)

较小的改进:
在任何路径或文件名周围加上引号
附加到echo命令的另一种重定向语法中,以避免出现空格。

@echo off
set "$New_line=Your text"
for /R "C:\folder\" %%A in (*.txt) do (
  > "%%~dpANew_%%~nxA" echo %$New_line%
  type "%%A" >> "%%~dpANew_%%~nxA"
  del "%%A" 2>nul
  ren "%%~dpANew_%%~nxA" "%%~nxA"
)