Windows批处理从子文件夹连接文件内容

时间:2017-10-08 10:08:40

标签: batch-file for-loop

我需要将文件的内容放入单个值中,并将文件的名称放在其中。我可以一个接一个地做,但是在循环通过子文件夹中的文件时我很难做到这一点。这是我的样本。

我在子文件夹中有一个文件,我需要循环遍历所有文件并获取每个内容。这是我的示例文件

D:\Projects\Fruits.txt
D:\Projects\Vegetables.txt

Fruits.txt里面有一个文本内容

Apple
is
good

我有一个代码来获取每个文件的内容。这是

@echo off    

setlocal enableextensions enabledelayedexpansion

set "var="
for /f "usebackq delims=" %%a in (.\Projects\Fruits.txt) do set "var=!var!%%a "
echo("%var%"

这将返回

Apple is good

现在我需要为所有文件执行此操作,因为它们在每个循环中存储其内容和文件名。像这样的东西

For loop code here (
   set FileName = ??
   set FileContent = ??
   echo %FileName% content is %FileContent%
)

所以在我的例子中,每个循环都应该像这样回应

Fruits content is Apple is good
Vegetable content is Eat vegetables
我在循环方面遇到了麻烦。如果你能指出我正确的方向,我将非常感谢谢谢!

2 个答案:

答案 0 :(得分:0)

这应该有所帮助:

   
@echo off
setlocal enableextensions enabledelayedexpansion

for /f %%A in ('dir /b *.txt') do (
    set "fileContent="
    for /f "delims=" %%B in ('type "%%~A"') do (
        set "fileContent=!fileContent! %%~B"
    )
    set "fileContent=!fileContent:~1!"

    echo %%~A content is !fileContent!
)
pause
  • 循环浏览文件
  • 获取文件名和内容
  • 输出

答案 1 :(得分:0)

它只是将一个循环嵌套在另一个循环中,如下所示:

@Echo Off
SetLocal EnableDelayedExpansion
For %%A In (*.txt) Do (Set "var="
    For /F "UseBackQ Delims=" %%B In ("%%A") Do Set "var=!var! %%B"
    Echo %%A content is !var:~1!)
Pause

我认为无需为FileNameFileContent

创建变量