嗨,我有一个主文件夹,一个辅助文件夹及其几个名为“folder-A,folder-B ... folder-N”的子项。每个孩子都有包含大量信息的txt文件。
我想读取每个文件夹(只有文件夹A到N),收集每个文本中的信息并合并该信息以生成Big.txt。用户还可以知道分析和合并了多少txt文件。
到目前为止没有好结果。有什么帮助吗?
@echo off
set DRV1=c:\Main\Other
set DRV2=c:\Big
cd %DRV1%
setlocal enabledelayedexpansion
set /a count=0
for %%f in (*.txt) do (
for /f "delims= " %%a in (%%f) do (
set /a count+=1
echo %%a >> %DRV2%\Big.txt
)
)
endlocal
echo There were processed %count% txt files ...
答案 0 :(得分:1)
这里有几个问题:
FOR
循环中逐行读取这些文件并且不能正常工作 - 而且也没有必要,因为你可以使用TYPE
来将每个.txt文件的内容写入/附加到另一个文件。 SetLocal EnableDelayedExpansion
,则此任务不需要!
- 它甚至可能导致问题 - 延迟扩展会吃掉感叹号,因为CMD.EXE
认为它是变量名的一部分,破坏文件名,从而导致文件内容不包含在Big.txt
中。顺便说一句,我不知道在它摆弄我的同时摆弄解决方案 - 因为我实际上有.txt文件在文件名中带有感叹号进行测试:)长话短说,这就是我最终的结果:
@ECHO OFF
SET DRV1=c:\Main\Other
SET DRV2=c:\Big
SET /a count=0
:: iterate over all directories in %DRV1%
FOR /f "tokens=*" %%F IN ( 'dir /b /a:d %DRV1%' ) DO (
:: for each directory, iterate over all .txt files
FOR %%G IN ( %DRV1%\%%F\*.txt ) DO (
SET /a count+=1
TYPE %%G >> %DRV2%\Big.txt
)
)
ECHO There were processed %count% txt files ...