Board logo

标题: [文件操作] [ 已解决 ]批处理如何在文件名的开头的数字后面添加所在的文件夹名称? [打印本页]

作者: viziyu    时间: 2015-9-16 18:21     标题: [ 已解决 ]批处理如何在文件名的开头的数字后面添加所在的文件夹名称?

本帖最后由 pcl_test 于 2017-6-29 00:01 编辑

前辈们,帮我写一个批处理可以吗?
工作中要经常把一批文件改名,如

003通讯录.doc,改成   003文件夹名称通讯录.doc
02长期负债.jpg,改成  02文件夹名称长期负债.jpg
5清单2.jpg,改成   5文件夹名称清单2.jpg(即后面的数字不理会)

“文件夹名称”是变量

要求
一、在文件名前面的数字后添加“文件夹名称”,处理文件夹里面的所有文件,“文件夹名称”自动获得。
二、只在文件名前面的数字串后添加“文件夹名称”,文件名后面出现的数字不理会。

多谢你们了!
作者: 回家路上    时间: 2015-9-16 20:41

本帖最后由 回家路上 于 2015-9-16 22:57 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. :: p是文件所在文件夹
  3. set p=D:\xxx\xxx
  4. cd /d %p%
  5. for /f "delims=" %%i in ('dir /b %p%') do (
  6. set fn=1%%~ni& set /a dn=fn-0
  7. for %%j in (!dn!) do set fn=!fn:*%%j=!
  8. ren "%%i" "!dn:~1!文件夹名称!fn!%%~xi"
  9. )
  10. pause & exit /b
复制代码

作者: viziyu    时间: 2015-9-16 22:44

回家路上 发表于 2015-9-16 20:41


楼上可能有所误解,我要的是更改文件名称,不是移动的
作者: 回家路上    时间: 2015-9-16 22:58

回复 3# viziyu


已修改。
作者: viziyu    时间: 2015-9-16 23:09

回复  viziyu


已修改。
回家路上 发表于 2015-9-16 22:58



    非常感谢你,实测是有效的!但还需要一点点改进,就是“文件夹名称”这里,改进为自动获得,比如要处理的文件在名为“测试”的文件夹里,就自动获得“测试”,在文件在名为“正常”的文件夹里,自动获得“正常”
作者: viziyu    时间: 2015-9-17 00:38

经过改进可以使用了,感谢!




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