标题: [文件操作] [已解决]批处理按照文件夹之间的名称中的相同字符进行归类 [打印本页]
作者: pine 时间: 2009-9-17 11:11 标题: [已解决]批处理按照文件夹之间的名称中的相同字符进行归类
有以下文件夹
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 编辑 ]
作者: 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!
- )
- pause>nul
复制代码
作者: xiaofei120 时间: 2009-9-17 16:32
貌似没有理解LZ的意思。。。。
作者: Lumiere 时间: 2009-9-17 16:58 标题: 回复 3楼 的帖子
我看不见得,理解没理解等楼主自己看了帖子试过以后再说吧。
作者: pine 时间: 2009-9-17 17:05
原帖由 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)
作者: Lumiere 时间: 2009-9-17 17:17 标题: 回复 5楼 的帖子
因为如果不是含有那4个字符的文件夹的话,前面的if判断语句就不会有!head!,head就是截取了文件夹名中第一个字符到倒数第五个字符,如果以这个字符串命名的文件夹存在当前目录下的话,那么说明%%a就是需要move并重命名的文件夹。应该很好理解的吧。
作者: Lumiere 时间: 2009-9-17 17:57 标题: 回复 3楼 的帖子
再看了看,突然意识到哥们可能是在说自己,汗一个……
作者: xiaofei120 时间: 2009-9-17 18:28
俺就是说的我自己。。。。狂汗。。。
作者: Lumiere 时间: 2009-9-17 20:08 标题: 回复 8楼 的帖子
接着汗,那这样的语境下,你还用个“貌似”,谁都会理解你在说楼上的人。你自己想想是不是吧?呵呵
作者: Fashioner 时间: 2009-9-18 12:51
2楼的代码毋庸置疑是正确的,在代码set "str=%%a"&set "head=!str:~0,-5!"&set "tail=!str:~-4!"中,为什么要在str=%%a两边加引号呢?去掉又显示不对,而一般状况下是不加引号的,这是为什么了?
作者: Lumiere 时间: 2009-9-18 13:16 标题: 回复 10楼 的帖子
在这里去掉应该也不会错的,加引号是比较好的书写习惯,可以避免一些因为特殊字符引起的问题。你再试一下,可能你去引号的时候弄错了、
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |