标题: [文件操作] 批处理如何实现文件批量重命名问题? [打印本页]
作者: 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
没测试过:- set fso=createobject("scripting.filesystemobject")
- folderp=inputbox("文件夹地址")
- set r=new regexp
- r.pattern="^(.*-)([0-9]*)\.DXF"
- r.ignorecase=true
- for each file in fso.getfolder(folderp)
- set m=r.execute(file.name)(0).submatches
- a=m(1)+0
- b=inputbox("b")
- file.name=m(0)&a*b&".DXF"
- 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
- @echo off
- setlocal enabledelayedexpansion
- set /p n=type a number:
- for /f "delims=" %%i in ('dir /b /a-d *.DXF') do (
- for /f "tokens=1-4 delims=-" %%a in ("%%~ni") do (
- set /a m=%%d*n
- ren "%%i" "%%a-%%b-%%c-!m!%%~xi"
- )
- )
复制代码
作者: 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
- @echo off
- setlocal enabledelayedexpansion
- set /p n=type a number:
- for /f "delims=" %%i in ('dir /b /a-d *.DXF') do (
- set "str=%%~ni"
- set "str=!str:-=\!"
- for %%a in ("!str!") do set "m=%%~nxa"
- set /a k=n*m
- set "oldName=%%i"
- for /f "tokens=1-2" %%b in ("!m! !k!") do (
- set "newName=!oldName:%%b.DXF=%%c.DXF!"
- )
- ren "%%i" "!newName!"
- )
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |