Batch file 批处理文件:将文件名插入文本文件
我有很多文本文件。每个文本文件都有普通的.txt扩展名。我想在批处理文件中使用命令提示符,复制每个文本文件的文件名并将其插入每个文本文件的第一行。这是可以使用批处理文件完成的操作,还是需要使用其他操作?Windows 10 64位 使用CMD、for、echo、copy、move和delete将文件名添加到文件的第一行 当您确信echo move…工作正常时,将其更改为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
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