如何连接CMD中目录和子目录中的所有文件?
我已经尝试了copy /b *.txt output.txt
,但它无效。
我有这些文件夹:
test
- a1
- a2 - a3
- a4 - a5
- a3
在每个文件夹中我都有一些txt文件。
答案 0 :(得分:2)
好吧,您可以简单地遍历所有文件夹中的所有文本文件,并将它们全部附加到同一个输出文件中。如下所示:
output.txt
您可能还需要排除添加for /R %F in (*.txt) do if not "%~nxF"=="output.txt" type "%F" >> output.txt
(或将其放在其他位置):
public function __toString()
{
return (string) $this->getCategory();
}
答案 1 :(得分:1)
如果您可以考虑使用PowerShell,则会将文件内容收集到一个文件中。
DEL "%TEMP%\output.txt" 2>NUL
powershell -NoProfile -Command ^
"Get-ChildItem -File -Recurse | Get-Content | Add-Content $Env:TEMP/output.txt }"
如果你想要一些更隐秘和cmd shell类似的东西,可以使用别名。
powershell -NoProfile -Command "gci -file -rec | gc | ac %TEMP%/out.txt }"
答案 2 :(得分:1)
您可以迭代文件夹,这可能比迭代文件更快!
在提示时从\test
运行此操作:
(For /D /R %A In (*) Do @Type "%A\*.txt" 2>Nul)>output.txt
或者从任何地方(除了来源目录中),根据需要替换FullorRelativePath\
:
(For /D /R "FullorRelativePath\test" %A In (*) Do @Type "%A\*.txt" 2>Nul)>output.txt
另一种方法是使用FindStr
但是因为它在每行前面加上文件名,你需要通过For /F
运行它才能输出所需的令牌
从任何地方运行,(在源目录中除外),根据需要替换FullorRelativePath\
:
(For /F "Tokens=1* Delims=:" %A In ('FindStr /S "^" "FullorRelativePath\test\*.txt" 2^>Nul') Do @Echo(%B)>output.txt