批处理文件以从CSV读取文件名并重命名文件夹中的文件

问题描述 投票:0回答:1

我在文件中有一组代码,我想使用该代码重命名文件夹中的文件。就像第一个文件的第一个代码,然后是第二个文件的第二个代码。

for /f "delims=" %%x in (code.csv) do call :rename "%%x" 
pause
GOTO :EOF

:rename
REN "*.jpg" "a/%1.jpg"

这是我写的内容,但这就像为所有文件运行第一个代码,并且正在获取存在的重复文件名,或者文件找不到错误。即使文件正在重命名,但是由于一些不必要的循环,我仍然花费大量时间。

任何使它变得完美的帮助都将是值得的

windows batch-file batch-rename
1个回答
0
投票

您需要一种并行读取目录和csv的方法。有一个技巧可以做到这一点:

@ECHO OFF
setlocal enabledelayedexpansion
<code.csv (
  for /f "delims=" %%x in ('dir /b *.jpg') do (
    set "NewName="
    set /p NewName=
    if not defined NewName goto :eof
    ECHO ren "%%x" "!NewName!"
  )
)

注意:在验证ECHO命令是否确实要执行实际启用ren命令后,将其删除。

<code.csv ( ... )set /p循环中为for提供另一行。在读取之前将其清除,因此当NewName中没有更多名称时,csv变量将变得不确定。未定义(没有更多名称)时,退出for循环。

[当没有其他文件要重命名或csv文件中没有新名称时,循环停止。

请参阅dir /?-尤其是/o开关,以了解如何对文件的名称,日期或大小进行排序(如果需要)。

[另一种可能性是构建csv内容或文件的数组,但我认为这对于此任务来说是过大的选择。

© www.soinside.com 2019 - 2024. All rights reserved.