如何使用bat将文本文件的名称写入文本文件?

时间:2014-04-18 10:05:49

标签: batch-file merge filenames

我有问题。我有很多文本文件(.txt)。我想在其中写入相应文本文件的名称,最后合并它们。我有很多。我不能手动完成,太耗时了。

假设我有一个名为" windows.txt"的文本文件。及其内容

Windows XP
Windows 7
Windows 8

我希望他们的内容是

windows
Windows XP
Windows 7
Windows 8

合并类似文件后,它们看起来应该是

windows
Windows XP
Windows 7
Windows 8

continents
Europe
Asia
Africa

languages
English
Chinese

请帮助!!

2 个答案:

答案 0 :(得分:0)

可能太容易但我认为这是有效的答案:

type *.txt >result 2>&1
ren result result.txt

诀窍是当type与文件列表或通配符一起使用时,它会在错误流中打印文件名。它不会被重定向到扩展名为txt的文件,以避免其打印但重命名最后。

关于写入其中的文件的名称(最好先测试一下)

@echo off
for %%a in (*.txt) do ( 
 type %%~na.txt* >%%~na 2>&1
 del  /q /f %%~na.txt
 ren %%~na %%~na.txt
 )

修改

如果启用了8.3表示法,可能会有效:

@echo off
ren ????????.txt ???????? >nul 2>&1
for /f "tokens=* delims=" %%# in ('for %%a in (????????^) do @echo %%a') do ( 

 echo %%#>%%~#_
 rem echo %%~n#_
 type %%~n# >>"%%~#_" 2>nul
 del  /q /f "%%~n#"
 ren "%%~n#_" "%%~n#.txt"
)

答案 1 :(得分:0)

@echo off
echo. >result
for /f %%i in ('dir /b /a-d *.txt') do (
 echo.
 echo %%~ni
 type %%i
)>>result
ren result result.txt

伪代码以便更好地理解:

turn echo off
delete result file
for all txt files in current directory do:
 print empty line
 print name of textfile without extension
 print textfile
and put it into new file "result"
if done, rename the resulting file