用于从 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
内容或文件的数组,但我认为这对这项任务来说有点过头了。
我的文件中有一组代码,我想用该代码重命名文件夹中的文件。就像第一个文件的第一个代码然后第二个文件的第二个代码。
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
内容或文件的数组,但我认为这对这项任务来说有点过头了。