Board logo

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

作者: 172043209    时间: 2017-5-25 09:36     标题: 【已解决】批处理如何将文件或文件夹移动到以其名称开头的部分字符串命名的文件夹里?

急急急急!!!求助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。
现在第一步我能实现,前面的字符串的位数也可以自己定,但是关键的移动文件夹不知道如何处理,请高手帮忙解决一下。
请高手帮忙解决一下,请高手帮忙解决一下,请高手帮忙解决一下
作者: ShowCode    时间: 2017-5-25 21:16

  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
复制代码
现在第一步我能实现,前面的字符串的位数也可以自己定

前面字符串的位数不一致,代码里面写死位数的话,创建的文件夹名不一定正确。
如果可能的话,建议在原始文件名里面用某个字符分割开字符串和汉字。
作者: 172043209    时间: 2017-5-26 08:24

回复 2# ShowCode
谢谢!!!测试成功。感谢!
作者: 172043209    时间: 2017-5-26 10:36

回复 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的时候提醒我

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




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