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

[文件操作] 批处理如何实现文件批量重命名问题?

[复制链接]
发表于 2023-4-23 20:29:47 | 显示全部楼层 |阅读模式
现在需要批量重命名文件实现以下功能 麻烦哪位大佬帮忙写一下 万分感谢

------------------------------
001_安装支脚-Q235-3-2.DXF
002_户外防水罩底座-SPCC-1.5-1.DXF
003_户外防水罩护罩01-SPCC-1.2-2.DXF
004_户外防水罩护罩02-SPCC-1.2-1.DXF
005_户外防水罩护罩03-SPCC-1.2-1.DXF
006_户外防雨帽-SPCC-1.2-1.DXF
007_户外音响防雨眉-SPCC-1.2-2.DXF
008_铰链耳-SPCC-2-5.DXF
009_锂电池限位框01-SPCC-1.5-1.DXF
010_锂电池限位框02-SPCC-1.5-1.DXF
011_限位块-SPCC-2-3.DXF-
------------------------------------------
以上是文件名现在需要
1. 设定文件名中最后一个-后面的数字为A
2. 提示用户输入数字为B
3. 将文件名中的A替换为A*B
发表于 2023-4-23 23:54:24 | 显示全部楼层
回复 7# hansenzhang


  
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p n=type a number:
  4. for /f "delims=" %%i in ('dir /b /a-d *.DXF') do (
  5.         set "str=%%~ni"
  6.         set "str=!str:-=\!"
  7.         for %%a in ("!str!") do set "m=%%~nxa"
  8.         set /a k=n*m
  9.         set "oldName=%%i"
  10.         for /f "tokens=1-2" %%b in ("!m! !k!") do (
  11.                 set "newName=!oldName:%%b.DXF=%%c.DXF!"
  12.         )
  13.         ren "%%i" "!newName!"
  14. )
复制代码
 楼主| 发表于 2023-4-23 22:28:04 | 显示全部楼层
回复 4# 77七


    大佬 你是以-为分列符号处理的对吧,文件名中的-并不像我给的例子这么规则 所以才描述成末尾最后一个-后面的数字 如果文件名中-不是固定的3个就会报错
 楼主| 发表于 2023-4-23 22:21:36 | 显示全部楼层
GavinWong大佬给了powershell的解决方案, 我测试了一下,目前可以正常跑,非常感谢大家的帮助.

powershell.exe -c "do{$a=read-host '输入a(整数)回车';}until([string]$a -match '^\d+$')$a=[int]$a;$re=[regex]'(?<=-)(\d+)$';gi *.dxf|ren -newname {$re.Replace($_.BaseName,{param($m)$a*([int]$m.Groups[1].Value)})+$_.Extension} -verbose"
pause
 楼主| 发表于 2023-4-23 22:18:54 | 显示全部楼层
回复 4# 77七


    非常感谢 膜拜大佬 刚刚测试目前可以正常跑 我才是小白
发表于 2023-4-23 22:01:51 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p n=type a number:
  4. for /f "delims=" %%i in ('dir /b /a-d *.DXF') do (
  5.         for /f "tokens=1-4 delims=-" %%a in ("%%~ni") do (
  6.                 set /a m=%%d*n
  7.                 ren "%%i" "%%a-%%b-%%c-!m!%%~xi"
  8.         )
  9. )
复制代码
 楼主| 发表于 2023-4-23 21:15:58 | 显示全部楼层
回复 2# jyswjjgdwtdtj


    报错
---------------------------
Windows Script Host
---------------------------
脚本:        V:\TEMP\2023-04-22\02\NOTES.vbs
行:        6
字符:        1
错误:        对象不支持此属性或方法
代码:        800A01B6
源:         Microsoft VBScript 运行时错误

---------------------------
确定   
---------------------------
发表于 2023-4-23 21:00:15 | 显示全部楼层
没测试过:

  1. set fso=createobject("scripting.filesystemobject")
  2. folderp=inputbox("文件夹地址")
  3. set r=new regexp
  4. r.pattern="^(.*-)([0-9]*)\.DXF"
  5. r.ignorecase=true
  6. for each file in fso.getfolder(folderp)
  7. set m=r.execute(file.name)(0).submatches
  8. a=m(1)+0
  9. b=inputbox("b")
  10. file.name=m(0)&a*b&".DXF"
  11. next
复制代码
保存为vbs
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 22:45 , Processed in 0.019994 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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