标题: [文本处理] BAT如何批量把文件名开头几个字符移动到文件名的末尾? [打印本页]
作者: 风陵渡 时间: 2020-3-7 14:24 标题: BAT如何批量把文件名开头几个字符移动到文件名的末尾?
请问如何把多个文件名开头几个字符移动到文件名的末尾。(字符数不固定,希望代码自己能够根据实际要移动的字符修改)
例如:【写字楼】2019年第二季度北京市场概览.pdf 实现批处理后效果:2019年第二季度北京市场概览【写字楼】.pdf
例如:20100410万科麓湖别墅项目销售培训计划.ppt 实现批处理后效果:万科麓湖别墅项目销售培训计划20100410.ppt
非常感谢!
作者: hlzj88 时间: 2020-3-7 21:21
批处理是把有共性的文件进行批量处理,但你的文件名之间没有共性,即没有一个模式能直接处理所有文件。
在未知字符数的情况下,要取前面的某段字符,起码这些字符也是要有规律的。没有规律批处理是不可以达到目的的。
作者: 风陵渡 时间: 2020-3-8 22:14
回复 2# hlzj88
您好朋友,您可能误会我的我意思了:
比如:我有一批文件,需要把文件名称的前4个字批量移动到文件名的末尾,这个如何写批处理;
再比如我又碰到一批文件,需要把文件名称的前5个字批量移动到文件名的末尾,这个如何在上一个案例的基础上如何修改那;
非常感谢?
作者: hlzj88 时间: 2020-3-9 07:56
本帖最后由 hlzj88 于 2020-3-12 12:19 编辑
- @echo off&setlocal enabledelayedexpansion
- title 数数法调整首尾
- set /p zs=你希望把第几个字符后的调整到前面---》
-
- for /f "delims=*" %%i in ('dir /b/on "*.pdf" "*.ppt"') do (
- set "a=%%~xi"
- set "b=%%~ni"
- set "c=%%i"
- set b=!b: =!
- set aa=!b:~0,%zs%!
- set bb=!b:~%zs%,100!
- echo !c! 改为 !bb!!aa!%%~xi>>记录.txt
- rem ren !c! !bb!!aa!%%~xi
- )
- echo
- exit
复制代码
通过试用,你会知道,按同一规则改名的文件要具有同一特征。这个特征就是 都是前面多少位。这个只能你来挑选。
建议,先阅读记录.txt来确认将要产生结果是否每一条都是你要的。
没有问题 删除语句中的 rem 三个字符即可得到改变。
慎用。
作者: Batcher 时间: 2020-3-9 10:45
回复 4# hlzj88
建议把第9行的,100去掉
作者: hlzj88 时间: 2020-3-10 06:46
回复 5# Batcher
谢谢传授。
作者: 风陵渡 时间: 2020-3-10 14:38
回复 4# hlzj88
非常感谢老兄指教,在使用的过程中已经能满足大部分文件的批处理,但是有一点小问题,就是处理的文件名中要是存在空格的时候,文件就不会被处理,
比如:2016自媒 网红 社群时代,营销怎么玩?(廊坊新奥).pdf (自媒和网红后面各有一个空格)
上面例子文件中含有空格,如果要将前4个字符调整到文件尾的话,批处理无法使用,应该是批处理程序自动判定空格前面的为文件名,导致无法处理,请问在批处理过程中,程序有办法可以排除文件中的空格问题吗?
下面是批处理显示的记录,非常感谢!
作者: 风陵渡 时间: 2020-3-10 14:38
回复 5# Batcher
非常感谢大大
作者: hlzj88 时间: 2020-3-10 21:46
复制代码
插入4楼7 8 之间
作者: 风陵渡 时间: 2020-3-11 14:26
回复 9# hlzj88
兄弟这样还是不行,带空格的文件无法修改
作者: smss 时间: 2020-3-11 15:23
回复 10# 风陵渡
11换成ren "%%i" "!bb!!aa!%%~xi"
作者: hlzj88 时间: 2020-3-12 12:20
回复 10# 风陵渡
4楼完全修改了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |