找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 3786|回复: 4

[文件操作] 【已解决】批处理如何获取当前文件夹中1.txt的命名规则,对当前图片/视频进行命名

[复制链接]
发表于 2025-6-29 14:53:46 | 显示全部楼层 |阅读模式
本帖最后由 zxy0199 于 2025-6-30 23:04 编辑

原文件
img202504237622.JPG
img202504237623.JPG
img202504237624.JPG
img202504237625.JPG

1.txt文件
手机1
手机2

结果输出
手机1-img202504237622.JPG
手机2-img202504237623.JPG
手机1-img202504237624.JPG
手机2-img202504237625.JPG


用ai写的代码报错了。。。求求大佬
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. :: 步骤1: 读取1.txt的命名规则
  4. set rule_count=0
  5. if not exist "1.txt" (
  6.     echo 错误: 1.txt 文件不存在!
  7.     pause
  8.     exit /b
  9. )

  10. for /f "usebackq delims=" %%a in ("1.txt") do (
  11.     set /a rule_count+=1
  12.     set "rule_!rule_count!=%%a"
  13. )

  14. if %rule_count% equ 0 (
  15.     echo 错误: 1.txt 中没有找到命名规则!
  16.     pause
  17.     exit /b
  18. )

  19. :: 步骤2: 收集支持的媒体文件(按修改时间排序)
  20. set file_count=0
  21. for /f "delims=" %%f in ('dir /b /o:-d *.jpg *.jpeg *.png *.gif *.bmp *.mp4 *.avi *.mov *.mkv *.flv 2^>nul') do (
  22.     set /a file_count+=1
  23.     set "file_!file_count!=%%f"
  24. )

  25. if %file_count% equ 0 (
  26.     echo 没有找到支持的图片或视频文件!
  27.     pause
  28.     exit /b
  29. )

  30. :: 步骤3: 循环应用命名规则
  31. set index=1
  32. for /l %%i in (1,1,%file_count%) do (
  33.     set "filename=!file_%%i!"
  34.     set "ext=!filename:~-4!"
  35.    
  36.     :: 获取当前规则
  37.     set "current_rule=!rule_%index%!"
  38.    
  39.     :: 生成新文件名并重命名
  40.     set "new_name=!current_rule! !filename!"
  41.     ren "!filename!" "!new_name!" 2>nul
  42.    
  43.     :: 更新规则索引(循环)
  44.     set /a index=(index %% rule_count) + 1
  45.    
  46.     echo 已重命名: "!filename!" -> "!new_name!"
  47. )

  48. echo.
  49. echo 完成! 已处理 %file_count% 个文件。
  50. pause
复制代码
发表于 2025-6-29 15:49:40 | 显示全部楼层
powershell可以试试
  1. $a = gc .\1.txt
  2. $n = 0
  3. gci *.jpg | %{rni $_ ($a[$n++%$a.Count] + $_.Name)}
复制代码
发表于 2025-6-29 16:13:05 | 显示全部楼层
回复 1# zxy0199

楼主须明确要求处理结果是否如下:
   在源文件 *.jpg 所在的目录中生成一个新文件如 2.txt ?
   其中奇数行 手机1xxxxxxxxxxxx.jpg 对应源文件列表中的奇数行 ?
   偶数行 手机2xxxxxxxxxxxx.jpg 对应源文件列表中的偶数行 ?
 楼主| 发表于 2025-6-29 19:54:36 | 显示全部楼层
回复 3# aloha20200628

不需要生成新的2.txt,bat文件和1.txt以及需要被执行的图片都在同一目录中,执行脚本之后读取1.txt文件的行数按照图片默认排序自动循环命名,生成一个result文件夹并把结果放进去。
发表于 2025-6-29 21:40:50 | 显示全部楼层
回复 4# zxy0199

以下代码存为 test.bat 运行,与 *.jpg 和 1.txt 同目录...

  1. @echo off &set "d=result" &setlocal enabledelayedexpansion
  2. set/a "n=0, k=0" &md "%d%" 2>nul
  3. for /f "delims=" %%a in (1.txt) do set/a "n+=1" &set "_#!n!=%%a"
  4. for /f "delims=" %%F in ('dir /b/a-d *.jpg') do (
  5.    set/a "k+=1" &if not defined _#!k! set "k=1"
  6.    for %%v in (!k!) do move /y "%%F" "%d%\!_#%%v!-%%F" )
  7. pause&exit/b
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:05 , Processed in 0.018429 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表