我有一个包含大量随机名称的.txt文件的文件夹。现在我想在文件夹中的每个文件的末尾添加一个唯一/升序号码。例如:
文件1命名" blah blah.txt包含内容" hello world"
文件2命名" blah blah blah.txt包含内容"嗨hello world"
运行.bat文件后,文件应该是:
文件1名为" blah blah.txt,内容为" hello world1" < - number" 1"加入
文件2命名" blah blah blah.txt,内容为"嗨hello world2" < - number" 2"添加等。
到目前为止我写过这一行:
FOR %%a in (*.txt) do ECHO 1>> %%a
这增加了" 1"到文件夹中的每个.txt。 从理论上讲,我必须交换" 1"带变量
答案 0 :(得分:1)
如果所有文件只有一行,并且没有行以:
开头,那么
@echo off
for /f "tokens=1* delims=:" %%A in (
'dir /b /a-d *.txt ^|findstr /n "^"'
) do for /f "usebackq eol=: delims=" %%L in ("%%B") do (echo %%L%%A)>"%%B"
如果处理多行文件,并且文件中的每一行都应该附加相同的数字,那么以下修改将起作用。
@echo off
for /f "tokens=1* delims=:" %%A in (
'dir /b /a-d *.txt ^|findstr /n "^"'
) do (
(for /f "usebackq eol=: delims=" %%L in ("%%B") do echo %%L%%A)>"%%B.new"
move /y "%%B.new" "%%B" >nul
)
答案 1 :(得分:0)
对于指示方案,每个文件只有一行,并且在其末尾添加了值
setlocal enableextensions disabledelayedexpansion
set "var=0"
for /r . %%a in (*.txt) do for /f "usebackq delims=" %%b in ("%%~fa") do (
set "line=%%b"
setlocal enabledelayedexpansion
>"%%~fa" echo(!line!!var!
endlocal
set /a "var+=1"
)
在当前文件夹及其下方(/r .
)的递归搜索中,对于每个.txt文件(%%a
),对于文件中的每一行(%%b
)在读取后,将读取的行放入同一个文件后,回显添加的变量。在每个循环中,变量值递增1。
循环中的setlocal/endlocal
游戏旨在处理文件中文本内的特殊字符(!)
答案 2 :(得分:0)
我认为这就是你想要的:
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
set /a inc+=1
for /f "usebackq delims=" %%b in ("%%~fa") do (
>"%%~fa" echo(%%b!inc!
)
)