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

Batch file to read file names from CSV and rename files in a folder

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

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

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

这是我写的,但这就像 运行 所有文件的第一个代码,并且我得到一个存在的重复文件名或文件找不到错误。尽管文件正在重命名,但我认为由于一些不必要的循环,这需要很多时间。

任何使其完美的帮助都将得到认可

您需要一种方法来并行读取目录和 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 ( ... )for 循环中的 set /p 提供了一行又一行。在读取之前清除它,因此当 csv 中没有更多名称时,NewName 变量未定义。退出 for 循环,当它未定义时(没有更多的名字)。

循环停止,当不再有文件要重命名或不再有来自 csv 文件的新名称时。

参见 dir /? - 特别是 /o 开关,了解如何根据名称、日期或大小对文件(如果需要)进行排序。

另一种可能性是构建一个包含 csv 内容或文件的数组,但我认为这对这项任务来说有点过头了。