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

时间:2015-11-03 13:00:17

标签: 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%"
)

问题是合并后我需要生成一个新列,其数字从1n开始,其中n是合并文件中的行数:

1
2
3
4
.
.
.
.
.
.
n

2 个答案:

答案 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
)

资源(必读,不完整):