通过.csv文件中的批处理脚本创建序列生成器
我有以下代码用于将.csv文件合并到单个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%" ) 问题是,合并后,我需要生成一个新列,其
@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
%SUMMARY\u FILE%
中出现了什么?对于/F“tokens=1,*delims=:“%%g in('findstr/N“^”“%SUMMARY\u FILE%”)是否回显%%g%%h
有帮助