BAT文件读取文件夹中的很多.txt文件合并成.csv文件并在每行前面加上部分文件名
BAT file to read many .txt files in the folder and merge them into .csv file and add part of the file name to the front of each line
我希望我的代码读取每个 .txt 文件并将文件名的前 6 个数字添加到行的前面...我已经设置了代码的第一部分并且我知道第二部分是如何设置的部分需要看我只是不知道如何合并它们..
@echooff
del Build_count.csv
for /f %%a in ('dir /b *.txt') do for /f "tokens=*" %%b in (%%a) do echo %%a,%%b >> Build_count.csv
@echo off
setlocal enabledelayedexpansion
if exist List.cvs del List.cvs
for %%a in (*.txt) do (
set fn=%%~na
set fn=!fn:~0,6!
)
仅仅将一个代码附加到另一个代码对您没有帮助。您需要将第二个片段插入到第一个循环中:
@echo off
setlocal enabledelayedexpansion
(for /f %%a in ('dir /b *.txt') do (
set "fn=%%~na"
for /f "tokens=*" %%b in (%%a) do (
echo !fn:~0,6!,%%b
)
))>Build_count.csv
为每个匹配的文件提取所需的字符串,然后在另一个循环中读取每一行并写入字符串加上该行。一次性将整个文件重定向到目标文件(这比打开文件、找到结尾、添加一行并为每一行再次关闭文件要快得多)。事先删除它是没有必要的,因为代码无论如何都会覆盖文件。
注意:for /f
循环现在会忽略空行和以 ;
开头的行。如果这是一个问题,则需要进行调整。
我希望我的代码读取每个 .txt 文件并将文件名的前 6 个数字添加到行的前面...我已经设置了代码的第一部分并且我知道第二部分是如何设置的部分需要看我只是不知道如何合并它们..
@echooff
del Build_count.csv
for /f %%a in ('dir /b *.txt') do for /f "tokens=*" %%b in (%%a) do echo %%a,%%b >> Build_count.csv
@echo off
setlocal enabledelayedexpansion
if exist List.cvs del List.cvs
for %%a in (*.txt) do (
set fn=%%~na
set fn=!fn:~0,6!
)
仅仅将一个代码附加到另一个代码对您没有帮助。您需要将第二个片段插入到第一个循环中:
@echo off
setlocal enabledelayedexpansion
(for /f %%a in ('dir /b *.txt') do (
set "fn=%%~na"
for /f "tokens=*" %%b in (%%a) do (
echo !fn:~0,6!,%%b
)
))>Build_count.csv
为每个匹配的文件提取所需的字符串,然后在另一个循环中读取每一行并写入字符串加上该行。一次性将整个文件重定向到目标文件(这比打开文件、找到结尾、添加一行并为每一行再次关闭文件要快得多)。事先删除它是没有必要的,因为代码无论如何都会覆盖文件。
注意:for /f
循环现在会忽略空行和以 ;
开头的行。如果这是一个问题,则需要进行调整。