Batch file 批处理文件:将文件名插入文本文件

Batch file 批处理文件:将文件名插入文本文件,batch-file,text,Batch File,Text,我有很多文本文件。每个文本文件都有普通的.txt扩展名。我想在批处理文件中使用命令提示符,复制每个文本文件的文件名并将其插入每个文本文件的第一行。这是可以使用批处理文件完成的操作,还是需要使用其他操作?Windows 10 64位 使用CMD、for、echo、copy、move和delete将文件名添加到文件的第一行 当您确信echo move…工作正常时,将其更改为move… 文件夹中不应存在名为:tmp.tmp或tmp2.tmp的文件 命令: 脚本: @rem Add the filena

我有很多文本文件。每个文本文件都有普通的.txt扩展名。我想在批处理文件中使用命令提示符,复制每个文本文件的文件名并将其插入每个文本文件的第一行。这是可以使用批处理文件完成的操作,还是需要使用其他操作?

Windows 10 64位

使用CMD、for、echo、copy、move和delete将文件名添加到文件的第一行

当您确信echo move…工作正常时,将其更改为
move…

文件夹中不应存在名为:
tmp.tmp
tmp2.tmp
的文件

命令:

脚本:

@rem Add the filename to the first line of the file with Windows 10 CMD, for, echo, copy, move and delete. 
@echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "eol=| delims=" %%g in ('dir *.txt /A-D /B 2^>nul') do ( 
>tmp.tmp echo %%g
echo/>>tmp.tmp  
copy /Y tmp.tmp + "%%g" tmp2.tmp 
echo move /Y tmp2.tmp "%%g"
) 
del tmp.tmp
exit /b 
评论:

setlocal EnableExtensions DisableDelayedExpansion
以完全定义执行环境莫菲

echo%%g>tmp.tmp
替换为
>tmp.tmp echo%%g
,以写入不带尾随空格的文件名莫菲

echo.>>tmp.tmp
替换为
echo/>tmp.tmp
,以确保其始终有效。阅读DosTips论坛主题:未能给出文本或空行莫菲

echo copy/y tmp2.tmp“%%g”
替换为
move/y tmp2.tmp“%%g”
,以更快地更新文件系统,而无需再次复制所有数据莫菲


将(*.txt)do中%%g的
替换为/F“eol=|delims=“%%g in('dir*.txt/A-D/b2^>nul')do的
或批处理文件在FAT16、FAT32或exFAT驱动器上未按预期工作,因为多次处理*.txt文件或跳过某些文本文件,或在最坏的情况下运行到一个无休止的循环中。FOR执行的命令块中的最后一行修改了与通配符模式*.txt匹配的目录项列表。因此,必须这样做sary,特别是在FAT驱动器上,处理捕获的文本文件名列表,而不是文件系统返回的更改列表。-Mofi

添加到您的问题:什么版本的Windows。所有文件都在同一文件夹中。文件夹中是否有名为:
tmp.tmp
tmp2.tmp
的文件?
@rem Add the filename to the first line of the file with Windows 10 CMD, for, echo, copy, move and delete. 
@echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "eol=| delims=" %%g in ('dir *.txt /A-D /B 2^>nul') do ( 
>tmp.tmp echo %%g
echo/>>tmp.tmp  
copy /Y tmp.tmp + "%%g" tmp2.tmp 
echo move /Y tmp2.tmp "%%g"
) 
del tmp.tmp
exit /b