Board logo

标题: [文件操作] 批处理如何实现文件批量重命名问题? [打印本页]

作者: hansenzhang    时间: 2023-4-23 20:29     标题: 批处理如何实现文件批量重命名问题?

现在需要批量重命名文件实现以下功能 麻烦哪位大佬帮忙写一下 万分感谢

------------------------------
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
作者: jyswjjgdwtdtj    时间: 2023-4-23 21:00

没测试过:
  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
作者: hansenzhang    时间: 2023-4-23 21:15

回复 2# jyswjjgdwtdtj


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

---------------------------
确定   
---------------------------
作者: 77七    时间: 2023-4-23 22:01

  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. )
复制代码

作者: hansenzhang    时间: 2023-4-23 22:18

回复 4# 77七


    非常感谢 膜拜大佬 刚刚测试目前可以正常跑 我才是小白
作者: hansenzhang    时间: 2023-4-23 22:21

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
作者: hansenzhang    时间: 2023-4-23 22:28

回复 4# 77七


    大佬 你是以-为分列符号处理的对吧,文件名中的-并不像我给的例子这么规则 所以才描述成末尾最后一个-后面的数字 如果文件名中-不是固定的3个就会报错
作者: 77七    时间: 2023-4-23 23:54

回复 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. )
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2