批量解析文件名为CSV

时间:2017-07-24 21:21:19

标签: file csv batch-file cmd

我有一个名为XX-randomString-numbers.jpg的9000个文件的文件夹,其中XX是我需要的ID号。

我需要将其导出为[XX |的CSV列表filename.jpg]这样我就可以在SQL中使用它了。

到目前为止,我把它拼凑在了一起:

Setlocal Enabledelayedexpansion
for %%A in ("C:\...\imageImport\*.jpg")
    do (
    set "str=%%~nA"
        for /f "delims=-" %%a in ("%str%")
            do set part=%%a
            echo.%part%
)

2 个答案:

答案 0 :(得分:1)

@Echo off
Setlocal Enabledelayedexpansion
( Echo ID^|Filename
  for %%F in ("C:\...\imageImport\*.jpg"
  ) do for /f "delims=-" %%I in ("%%F"
  ) do set Echo %%I^|%%F
) >Out.csv

答案 1 :(得分:1)

您正在启用delayed expansion,但您没有使用它。无论如何,你的代码中不需要它,因为你真的不需要任何临时变量。您需要做的是更正for loops的语法并删除do前面的多余换行符。

所以这是固定代码:

for %%A in ("C:\...\imageImport\*.jpg") do (
    for /F "delims=- eol=-" %%a in ("%%~nA") do (
        echo(%%a^|%%~nA
    )
)

要将结果写入文件output.csv,请使用:

@echo off
> "output.csv" (
    for %%A in ("C:\...\imageImport\*.jpg") do (
        for /F "delims=- eol=-" %%a in ("%%~nA") do (
            echo(%%a^|%%~nA
        )
    )
)

eol=-循环指定for /F选项,不要忽略以默认eol字符;开头的文件,因此,eol选项为有效停用,因为eol隐藏在delims后面,因为给出了相同的字符。