【问题标题】:Change the names of pictures in a folder using a text file使用文本文件更改文件夹中图片的名称
【发布时间】:2020-01-17 04:03:36
【问题描述】:

我的文件夹中有几张我学生的照片,还有一个文本文件中包含学生姓名的列表。 我想创建一个批处理文件来使用文本文件(names.txt)重命名图片,这样每张图片都有学生的名字。

所有图片均为 .png 格式。我搜索了这个网站并尝试了以下代码:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

rem Load the list of new filenames
set i=0
for /F "delims=" %%a in (names.txt) do (
   set /A i+=1
   set "newname[!i!]=%%a"
)
rem Do the rename:
set i=0
for /F "delims=" %%a in ('dir /b /o:n *.png') do (
   set /A i+=1
   for %%i in (!i!) do ren "%%a" "!newname[%%i]!"
)

我在文件夹中创建批处理文件,当我执行它时,没有任何反应。 我认为它没有选择正确的文件夹来工作,但我不确定。

文件示例:

1.png
2.png
3.png

names.txt 示例

1_john_dalton
2_carol_denvers
3_steve_austin

【问题讨论】:

  • 你有很多 for 循环试图实现不那么复杂的事情......但是实际文件名的示例和names.txt 的内容示例在哪里?
  • 图片被命名为 1 到 25。文件 names.txt 的名称在一列中:1_john_dalton 2_carol_denvers 3_steve_austin ...
  • 那么你做到了吗?
  • 遗憾的是它不起作用。我想我会用老式的方式来做。非常感谢您花时间帮助我!!
  • 不工作?这是一个非常广泛的声明。

标签: windows batch-file text rename


【解决方案1】:

根据您的 cmets 和当前代码的构造,您似乎想要这样的东西:

@echo off
for /F "delims=" %%a in (names.txt) do (
   for /f %%i in ('dir /b /o:n *.png') do echo ren "%%i" "%%a%%~xi"
)

以上只是简单地回显结果而不进行重命名,只有当您对结果感到满意时,才能从最后一行的 ren 之前删除 echo

您的示例似乎也想重用旧的数字名称,所以如果确实如此,那么应该是这样:

@echo off
for /F "delims=" %%a in (names.txt) do (
   for /f %%i in ('dir /b /o:n *.png') do echo ren "%%i" "%%a[%%~ni]%%~xi"
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 2021-07-17
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多