我有以下代码将.csv文件合并到一个csv文件中
@echo off
SET SUMMARY_FILE=D:\sumfile.csv
IF EXIST "%SUMMARY_FILE%" (DEL "%SUMMARY_FILE%")
CD D:\Prasad
FOR /F "usebackq tokens=*" %f IN (`DIR /S /B *.csv`) DO (
TYPE "%f" >>"%SUMMARY_FILE%"
)
问题是合并后我需要生成一个新列,其数字从1
到n
开始,其中n
是合并文件中的行数:
1
2
3
4
.
.
.
.
.
.
n
答案 0 :(得分:0)
只需在开头读取和写入文件的每一行,并使用行号。此外,在.bat文件中,FOR循环变量必须具有双百分号字符。
SETLOCAL ENABLEDELAYEDEXPANSION
SET SUMMARY_FILE=D:\sumfile.csv
IF EXIST "%SUMMARY_FILE%" (DEL "%SUMMARY_FILE%")
CD D:\Prasad
SET /A LINE_NUMBER=1
FOR /F "usebackq tokens=*" %%f IN (`DIR /S /B *.csv`) DO (
FOR /F "usebackq tokens=*" %%s IN (`TYPE "%%~f"`) DO
ECHO>>"%SUMMARY_FILE%" !LINE_NUMBER!,%%s
SET /A LINE_NUMBER=!LINE_NUMBER!+1
)
)
答案 1 :(得分:0)
>>
解决方案在每次迭代时打开和关闭目标文件。具有>
重定向的下一个解决方案立即完成作业:
@echo off
SET "SUMMARY_FILE=D:\sumfile.csv"
rem not necessary IF EXIST "%SUMMARY_FILE%" (DEL "%SUMMARY_FILE%")
pushd D:\Prasad
> "%SUMMARY_FILE%" (
for /F "tokens=1,2,* delims=:" %%g in ('
findstr /S "^" "*.csv" 2^>NUL ^| findstr /N "^"
') do if not "%%i"=="" echo %%g,%%i
)
资源(必读,不完整):
>>
,2>NUL
等特殊页面)Redirection