标题: [文件操作] 求批量去除文件名后面一段相等长度但内容不一样的批处理 [打印本页]
作者: a3228269 时间: 2020-5-10 21:55 标题: 求批量去除文件名后面一段相等长度但内容不一样的批处理
例如将
苹果雪梨-2020-05-07 .xls
相机哈密瓜-2020-07-01 .xls
芒果-2020-05-27 .xls
变成
苹果雪梨.xls
相机哈密瓜.xls
芒果.xls
算上最后的空格应该是去掉了文件名后的12个字符
求批处理尽量不要软件
作者: xp3000 时间: 2020-5-10 22:28
- CD /D "%~dp0"
-
- @echo off
- for /f "tokens=1,* delims=-" %%i in ('dir /b/a-d/oN *.xls') do (
- ren "%%~i-%%~j" "%%i.xls"
- )
- pause
复制代码
作者: xp3000 时间: 2020-5-10 22:37
- @echo off
- @for /f "delims=" %%i in ('dir /b *.xls *.xlsx') do (
- @ren2 -f "([^-]*)-.*%%~xi" "$1%%~xi"
- )
- pause
复制代码
ren2要好一些,方便操作不规则文件名按照规则重命名
http://bcn.bathome.net/tool/ren2.exe
作者: a3228269 时间: 2020-5-11 10:28
回复 3# xp3000
好用,十分给力
作者: netdzb 时间: 2020-5-11 12:43
本帖最后由 netdzb 于 2020-5-11 12:50 编辑
回复 1# a3228269
我还有一个办法
ren *.xls *
ren -* *
ren -* *
ren -* *
ren * *.xls
我不知道理解的对吗?这个思路是否可以?
层层递归把多余的内容去掉。
作者: netdzb 时间: 2020-5-11 12:49
回复 3# xp3000
看一下,我的思路能否实现?我是手机无法测试。
作者: xp3000 时间: 2020-5-11 14:01
不能,
*.xls和*,*会当成文件名和原来类型
-*和*或许也会被视为同一个
ren2 -f "([^-]*)-.*\.(xls|xlsx)" "$1.$2"
ren2.exe这个好用也容易理解,本站网友推荐用的,我也推荐下;
上面忘记说下载后放入C:\Windows\System32了
第一个()是非-的任意字节0个或多个;
-.*\.中的-是-字符,然后.*是任意字符0个或多个,最后\.就是.字符;
第二个()是xls和xlsx
替换部分的$1.$2就是前面第一个()加.和第二个()的内容。
最重要的发现居然支持零宽断言
(?=(要有|A))
(?!(不能有|A))
作者: netdzb 时间: 2020-5-11 15:04
回复 7# xp3000
工具在哪里下载,好像失效了啊。
作者: xp3000 时间: 2020-5-11 15:42
回复 8# netdzb
http://bcn.bathome.net/s/tool/index.html?key=ren2
作者: gao_leyun_km 时间: 2020-5-12 21:13
本帖最后由 gao_leyun_km 于 2020-5-12 21:24 编辑
方法一:多选目标文件,批量拖入批处理文件实现改名- @echo off
- :Loop
- if not exist "%~1" exit
- set N=%~n1
- set N=%N:~0,-12%
- ren "%~1" "%N%%~x1"
- shift
- goto Loop
复制代码
方法二:按文件名特征特征查找目标文件,双击运行实现同一目录下批量改名(其中-2可以替换成各个文件名中共有的字符串,目录下具有该字符串的文件都会被改名)- @echo off&cd /d "%~dp0"
- for /f "delims=" %%i in ('dir /b^|find "-2"') do call :Loop "%%~fi"
- exit
- :Loop
- set N=%~n1
- set N=%N:~0,-12%
- ren "%~1" "%N%%~x1"
- goto :eof
复制代码
作者: qixiaobin0715 时间: 2020-10-4 16:18
练练手:- @echo off
- setlocal enabledelayedexpansion
- for %%a in (*.xls) do (
- set "str=%%a"
- set str=!str:~0,-16!
- ren "%%a" "!str!%%~xa"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |