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

[文件操作] [已解决]批处理按照文件夹之间的名称中的相同字符进行归类

有以下文件夹

package_aaa_wok
package_aaa_wok_0804
package_bde_qwoo
package_bde_qwoo_0409
package_ccae_lin_un
package_ccae_lin_un_040c

想实现:
把package_aaa_wok_0804归类到package_aaa_wok文件夹里,并重命名package_aaa_wok_0804为0804

把ppackage_bde_qwoo_0409归类到package_bde_qwoo文件夹里,并重命名package_bde_qwoo_0409为0409

以此类推........

整理好的目录是这样的:

package_aaa_wok
|___0804    (也就是原来的package_aaa_wok_0804)


重命名是以 该文件夹最后四位字符来命名的,例如:0804、0409、040c (这四位字符没有规律,可以是任意字符(除特殊字符外))

我的思路是:把以上的package_aaa_wok_0804最后5位字符舍掉,然后剩余的字符串与当前文件夹进行匹配,并归类好

但用for,想了很久,没想通可以怎么实现,希望大家帮帮忙,或提供可行的思路

[ 本帖最后由 pine 于 2009-9-17 20:45 编辑 ]
1

评分人数

    • keen: 感谢主动给标题标注[已解决]字样PB + 2

原帖由 Lumiere 于 2009-9-17 12:24 发表
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /ad /b') do (
      set "str=%%a"&set "head=!str:~0,-5!"&set "tail=!str:~-4!"
      if exist !head! move %%a !head!\!tail!
) ...


谢谢Lumiere,解决了,但是仍有点理解不过来,望能注释一下,主要是这句

      if exist !head! move %%a !head!\!tail!

如果存在!head!这个文件夹,就移动%%a

这时移动的%%a为什么一定是含有那四位字符的文件夹?(如:package_aaa_wok_0804)

TOP

返回列表