批处理命令 - 读取 csv 文件并创建具有多个识别内容的文件名

Batch command - read csv file and create filename with multi identified content

我有多个文件,每个文件都具有相同的文件名

示例:

但是每个文件中的内容是不同的。

在标记点 2 和 4 中的文件的第一行和第二行,我能够识别该文件。我想用这两个数据点重命名文件。

例子

在 Test.csv 文件中,行记录 1 和 2

Within Test (1).csv line record 1 and 2

Within Test (2).csv line record 1 and 2

Within Test (3).csv line record 1 and 2

我想将以下文件重命名为

现在我可以用第 2 行和第 4 个标记上的数据识别和重命名文件。我希望能够连接第 2 行(令牌 4)和第 1 行(令牌 2)上的两个数据。下面是我当前的代码。

@echo off

for %%i in (*.csv) do (
  for /f "skip=1 token=4 delims=," %%j in ('findstr /B /I "^" "%%i"') do (
    ren "%%i" "%%j.temp_txt"
  )
)

ren *.temp_txt *.csv

以下(未经测试的)批次迭代 csv 并计算内容的行数,将 line1 token2 存储在 var L1T2 amd line2 token4 到 L2T4 中。
生成的重命名命令存储在一个(伪)数组中并在最后执行。
要真正执行重命名,请删除最后一行中的 echo。

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
Set Cnt=0
for %%i in (*.csv) do (
  Set /A "Line=0,Cnt+=1"
  for /f "tokens=2,4 delims=," %%A in ('Type "%%i"') do (
    Set /A Line+=1
    If !Line! equ 1 Set "L1T2=%%A"
    If !Line! equ 2 Set "L2T4=%%B"
  )
  Set Ren[!Cnt!]=ren "%%i" "!L2T4!_!L1T2!.csv"
)
For /L %%C in (1,1,%Cnt%) Do Echo !Ren[%%C]!