2017-07-24 38 views
0

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

我需要将其导出到[XX | 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% 
) 
+0

Windows 7.我会评论我到目前为止。 – Peter

+0

'cd“C:\ ... \ imageImport \”&(for/F“tokens = 1 * delims = - ”%% a in('dir/B * .jpg')do echo %% a^|% %a - %% b)> output.csv' – Aacini

+0

你知道“** C ** SV”是什么意思,你不? – aschipfl

回答

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 
+0

完美!谢谢!! – Peter

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 beco mes被隐藏在delims之后,因为同一个字符被给出。