读取文本文件并批量获取其文件名

读取文本文件并批量获取其文件名

我在下面尝试过。我正在获取内容,但没有文件名。

type *.txt > newfile.txt
for %f in (*.txt) do type "%f" >> output.txt

输出文件包含多个文件中的内容

12
324
3243
45
5645
6

预期输出为:

Filename1.txt
12
324
3243
Filename2.txt
45
5645
Filename2.txt
6

[编辑/] 看来,预期输出(尚待确认)确实是:

Filename1.txt
12
324
3243
Filename2.txt
45
5645
Filename2.txt
6
gaoyuanzhiyun 回答:读取文本文件并批量获取其文件名

type有一个意外的习惯:它将文件名写入STDERR,但是将文件内容写入STDOUT。如果要将两者都重定向到文件,则需要将STDOUT(>)和STDERR(2>&1 =“与STDOUT相同的目的地”)都重定向:

type *.txt >newfile.tmp 2>&1
move /y newfile.tmp newfile.txt

命名目标文件.txt也会导致键入(结果文件将包含您的某些文件的两个副本)。因此,我重定向到.tmp文件,并在以后重命名。

,

我相信您想要这样的东西:

for %_ in (
 "C:\Folder\*.txt"
) do (
  ECHO=
  ECHO==============================================
  ECHO== Begin File: %~nx_
  ECHO==============================================
  ECHO=/---------------------------------------------\
  type "%~f_"
  ECHO=\---------------------------------------------/
  ECHO=
) >> "C:\SomeFolder\output.txt"

,

我找不到想要的结果。相反,我采用了另一种方法,即在每个文本文件的第一个谎言中添加文件名,然后

type *.txt > output.txt 

下面是我用来在每个文本文件的第一行中添加文件名的命令

for %%I in (*.txt) do (echo %%~nI>"%TEMP%\FileName.tmp"
    echo/>>"%TEMP%\FileName.tmp"
     copy /B "%TEMP%\FileName.tmp" + "%%~I" "%%~I.tmp">nul
  del "%%~I"    ren "%%~I.tmp" "%%~nxI")
del "%TEMP%\FileName.tmp" 2>nul
本文链接:https://www.f2er.com/3141566.html

大家都在问