[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] BAT如何批量把文件名开头几个字符移动到文件名的末尾?

请问如何把多个文件名开头几个字符移动到文件名的末尾。(字符数不固定,希望代码自己能够根据实际要移动的字符修改)

例如:【写字楼】2019年第二季度北京市场概览.pdf     实现批处理后效果:2019年第二季度北京市场概览【写字楼】.pdf   

例如:20100410万科麓湖别墅项目销售培训计划.ppt     实现批处理后效果:万科麓湖别墅项目销售培训计划20100410.ppt


非常感谢!

批处理是把有共性的文件进行批量处理,但你的文件名之间没有共性,即没有一个模式能直接处理所有文件。

在未知字符数的情况下,要取前面的某段字符,起码这些字符也是要有规律的。没有规律批处理是不可以达到目的的。
目的,学习批处理

TOP

回复 2# hlzj88


您好朋友,您可能误会我的我意思了:

比如:我有一批文件,需要把文件名称的前4个字批量移动到文件名的末尾,这个如何写批处理;

再比如我又碰到一批文件,需要把文件名称的前5个字批量移动到文件名的末尾,这个如何在上一个案例的基础上如何修改那;

非常感谢?

TOP

本帖最后由 hlzj88 于 2020-3-12 12:19 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. title 数数法调整首尾
  3. set /p zs=你希望把第几个字符后的调整到前面---》
  4. for /f "delims=*" %%i in ('dir /b/on "*.pdf" "*.ppt"') do (
  5.   set "a=%%~xi"
  6.   set "b=%%~ni"
  7.   set "c=%%i"
  8.   set b=!b: =!
  9.   set aa=!b:~0,%zs%!
  10.   set bb=!b:~%zs%,100!
  11.   echo !c! 改为 !bb!!aa!%%~xi>>记录.txt
  12. rem ren !c! !bb!!aa!%%~xi
  13. )
  14. echo 
  15. exit
复制代码
通过试用,你会知道,按同一规则改名的文件要具有同一特征。这个特征就是  都是前面多少位。这个只能你来挑选。
建议,先阅读记录.txt来确认将要产生结果是否每一条都是你要的。
没有问题 删除语句中的 rem 三个字符即可得到改变。
慎用。
目的,学习批处理

TOP

回复 4# hlzj88


    建议把第9行的,100去掉
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Batcher

谢谢传授。
目的,学习批处理

TOP

回复 4# hlzj88


    非常感谢老兄指教,在使用的过程中已经能满足大部分文件的批处理,但是有一点小问题,就是处理的文件名中要是存在空格的时候,文件就不会被处理,

比如:2016自媒 网红 社群时代,营销怎么玩?(廊坊新奥).pdf  (自媒和网红后面各有一个空格)

上面例子文件中含有空格,如果要将前4个字符调整到文件尾的话,批处理无法使用,应该是批处理程序自动判定空格前面的为文件名,导致无法处理,请问在批处理过程中,程序有办法可以排除文件中的空格问题吗?

下面是批处理显示的记录,非常感谢!

TOP

回复 5# Batcher


    非常感谢大大

TOP

  1. set b=!b: =!
复制代码
插入4楼7  8 之间
目的,学习批处理

TOP

回复 9# hlzj88

  兄弟这样还是不行,带空格的文件无法修改

TOP

回复 10# 风陵渡

11换成ren "%%i" "!bb!!aa!%%~xi"

TOP

回复 10# 风陵渡

4楼完全修改了
目的,学习批处理

TOP

返回列表