![从目录中读取多个文件到一个文件中,以换行符分隔](https://linux22.com/image/1501990/%E4%BB%8E%E7%9B%AE%E5%BD%95%E4%B8%AD%E8%AF%BB%E5%8F%96%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E5%88%B0%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E4%B8%AD%EF%BC%8C%E4%BB%A5%E6%8D%A2%E8%A1%8C%E7%AC%A6%E5%88%86%E9%9A%94.png)
我的脚本是:
@echo off
setlocal EnableDelayedExpansion
set LF=^
rem ** The two empty lines are necessary
set "content="
for /f "delims=" %%x in ('dir /b /s D:\v\*.*') do (
set "content=!content!%%x!LF!"
echo. >>
)
echo(!content!>a.txt
endlocal
我从目录中读取所有文件名D:\
并将它们写入a.txt
。输出如下
D:\v\a.csvD:\v\b.txtD:\v\c.xml
我需要的输出是
D:\v\a.csv
D:\v\b.txt
D:\v\c.xml
如何在每个文件名后添加一个换行符?
答案1
如何在每个文件名后添加一个换行符?
将它们写出来for
而不是建立输出行。
使用以下(大大简化的)批处理文件。
测试.cmd:
@echo off
for /f "delims=" %%x in ('dir /b /s D:\v\*.*') do (
echo %%x>>a.txt
)
endlocal
我没有驱动器 D:,因此在驱动器 F 上运行以下测试:
示例输出:
F:\test>dir f:\v
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of f:\v
03/08/2016 08:40 <DIR> .
03/08/2016 08:40 <DIR> ..
02/08/2016 20:43 0 a.csv
02/08/2016 20:43 0 b.txt
02/08/2016 20:43 0 c.xml
3 File(s) 0 bytes
2 Dir(s) 1,772,975,259,648 bytes free
F:\test>test
F:\test>type a.txt
F:\v\a.csv
F:\v\b.txt
F:\v\c.xml
F:\test>