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

[文本处理] 【已解决】批处理如何将文件或文件夹移动到以其名称开头的部分字符串命名的文件夹里?

急急急急!!!求助bat批量处理文件及文件夹
现在有一批文件(不同格式.jpg,.pdf,.txt,.doc,.xls,等),名称具有规律性,文件名前面都是字符串码,如1978-JX13-1.0001,1998-JX13-11.0001等,后面接文件名(中文字,可考虑用逗号隔开),现在的需要解决的问题就是:第一步,以每个文件前面的字符串为名建立文件夹,并将相应的文件移入到文件夹中,如1978-JX13-1.0001二维若无才,1978-JX13-1.0001光环咖啡,移入到文件夹1978-JX13-1.0001中;第二步,将已经完成的文件夹1978-JX13-1.0001,1978-JX13-1.0002,1978-JX13-1.0003,1978-JX13-1.0004,以前面的部分字符串如1978-JX13-1为名建立文件夹,并将文件夹1978-JX13-1.0001,1978-JX13-1.0002,1978-JX13-1.0003,1978-JX13-1.0004连同里面的文件移动到文件夹1978-JX13-1中,见图3。
现在第一步我能实现,前面的字符串的位数也可以自己定,但是关键的移动文件夹不知道如何处理,请高手帮忙解决一下。
请高手帮忙解决一下,请高手帮忙解决一下,请高手帮忙解决一下
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4.     set "fd=%%i"
  5.     set "fd=!fd:~0,16!"
  6.     if not exist "!fd!\" (
  7.         md "!fd!"
  8.     )
  9.     move /y "%%i" "!fd!"
  10. )
  11. for /f "tokens=1-2 delims=." %%i in ('dir /b /ad ^| findstr "\."') do (
  12.     if not exist "%%i\" (
  13.         md "%%i"
  14.     )
  15.     move /y "%%i.%%j" "%%i\"
  16. )
  17. pause
复制代码
现在第一步我能实现,前面的字符串的位数也可以自己定

前面字符串的位数不一致,代码里面写死位数的话,创建的文件夹名不一定正确。
如果可能的话,建议在原始文件名里面用某个字符分割开字符串和汉字。
1

评分人数

测试代码之前请做好备份

TOP

回复 2# ShowCode
谢谢!!!测试成功。感谢!

TOP

回复 3# 172043209
大侠,您好,首先感谢你昨天的解答。

还想问一下,当我完成第一步,文件归到文件夹的时候,我想把底层文件的文件名前面的(如:C01-1978-JX13-1.0001,C01-1978-JX13-1.0002,C02-1978-JX13-1.0003,C02-1978-JX13-1.0004)
字符串“-”分节中选择批量删除相同的1978-JX13-,能否自己选择输入删除从 第几位到第几位 从而达到完成批量删除所有文件名的中间或前面部分内容,
   pause的时候提醒我

谢谢大侠帮助我加写一段语句

TOP

返回列表