批处理文件可将行添加到文件夹和子文件夹中的多个.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文件中添加行
答案 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"
)