通过.csv文件中的批处理脚本创建序列生成器

通过.csv文件中的批处理脚本创建序列生成器,csv,batch-file,Csv,Batch File,我有以下代码用于将.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%" ) 问题是,合并后,我需要生成一个新列,其

我有以下代码用于将.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

只需在文件的每一行的开头写一个行号即可。此外,在.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
    )
)

使用
>
的解决方案在每次迭代中打开和关闭目标文件。下一个带有
>
重定向的解决方案立即完成任务:

@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
    等特殊页面)

它既不是合并也不是生产线编号与编号。。。如果可能,请重新检查脚本。。。即使是上一次我从u收到类似的脚本…我也发现了一个我错过的背景。它以什么方式“不工作?”是否有错误消息?
%SUMMARY\u FILE%
中出现了什么?
对于/F“tokens=1,*delims=:“%%g in('findstr/N“^”“%SUMMARY\u FILE%”)是否回显%%g%%h
有帮助