![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 00:46 |
共 47,811 主题排行 / 349,897 发帖 / 今日 2 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [讨论]文件分类的问题。 |
| 可打印版本 750 / 13 |
| 第1楼 yefeng2651 | 发表于 2008-10-09 17:46 |
| 初级用户 发帖 16 积分 36 | |
|
[讨论]文件分类的问题。 问题:
一目录下 有 N个jpg,现在想按文件名第一个_前四位数 建立文件夹 并将相应的jpg移动到对应的目录里去,即0001_*.jpg 到0001目录下、0002_*.jpg 到0002目录下 0001_0000_0000.jpg 0001_0000_0001.jpg …… 0002_0000_0000.jpg 0002_0000_0001.jpg …… 俺的答案: @echo off for /f "delims=_" %%i in ('dir /a-d /b *.jpg') do md %%i & move %%i_*.jpg %%i 问题如下: E:\000>list3.cmd E:\000\0001_0000_0000.jpg E:\000\0001_0000_0001.jpg 子目录或文件 0001 已经存在。 存在一个重名文件,或是找不到文件。 子目录或文件 0001 已经存在。 存在一个重名文件,或是找不到文件。 E:\000\0002_0000_0000.jpg E:\000\0002_0000_0001.jpg 子目录或文件 0002 已经存在。 存在一个重名文件,或是找不到文件。 子目录或文件 0002 已经存在。 存在一个重名文件,或是找不到文件。 E:\000> 可以看到有重复的行为。浪费资源。 请大家讨论。 |
|
| 第2楼 yefeng2651 | 发表于 2008-10-09 17:49 |
| 初级用户 发帖 16 积分 36 | |
|
HAT 版 回复:
@echo off for /f "delims=_" %%i in ('dir /a-d /b *.jpg') do ( if not exist %%i ( md %%i move %%i_*.jpg %%i ) ) 很完美的解决问题。 E:\000>list.cmd E:\000\0001_0000_0000.jpg E:\000\0001_0000_0001.jpg E:\000> ps:在dos命令行下 这个怎么打哦? |
|
| 第3楼 yefeng2651 | 发表于 2008-10-09 17:54 |
| 初级用户 发帖 16 积分 36 | |
|
buddiyar兄:
@echo off for /f "delims=_" %%i in ('dir /a-d /b *.jpg' do (move %%i_*.jpg %%i || md %%i && move %%i_*.jpg %%i)好强大的脑袋啊,怎么想的?? ![]() ![]() 不过美中不足,有点问题,如下: E:\000>list2.cmd E:\000>for /F "delims=_" %i in ('dir /a-d /b *.jpg' do (move %i_*.jpg %i || md %i && move %i_*.jpg %i ) E:\000>(move 0001_*.jpg 0001 || md 0001 && move 0001_*.jpg 000 1 ) 无法将多个文件移动到单个文件中。 E:\000\0001_0000_0000.jpg E:\000\0001_0000_0001.jpg E:\000>(move 0001_*.jpg 0001 || md 0001 && move 0001_*.jpg 000 1 ) 存在一个重名文件,或是找不到文件。 子目录或文件 0001 已经存在。 E:\000>(move 0001_*.jpg 0001 || md 0001 && move 0001_*.jpg 000 1 ) 存在一个重名文件,或是找不到文件。 子目录或文件 0001 已经存在。 E:\000>(move 0001_*.jpg 0001 || md 0001 && move 0001_*.jpg 000 1 ) 存在一个重名文件,或是找不到文件。 子目录或文件 0001 已经存在。 E:\000\0002_0000_0000.jpg E:\000\0002_0000_0001.jpg E:\000>(move 0002_*.jpg 0002 || md 0002 && move 0002_*.jpg 000 2 ) 存在一个重名文件,或是找不到文件。 子目录或文件 0002 已经存在。 E:\000>(move 0002_*.jpg 0002 || md 0002 && move 0002_*.jpg 000 2 ) 存在一个重名文件,或是找不到文件。 子目录或文件 0002 已经存在。 E:\000> ------------ 不知如何解决! |
|
| 第4楼 yefeng2651 | 发表于 2008-10-09 17:56 |
| 初级用户 发帖 16 积分 36 | |
|
最后谢谢各位帮助我的,及群里的各位听我唠叨的。
留下痕迹,以助后来者 :) |
|
| 第5楼 Vampire | 发表于 2008-10-09 17:56 |
| 初级用户 发帖 78 积分 176 | |
|
纯DOS好象FOR就支持环境变量的读取...........
|
|
| 第6楼 buddiyar | 发表于 2008-10-09 18:37 |
| 初级用户 发帖 75 积分 160 | |
|
E:\000>(move 0001_*.jpg 0001 || md 0001 && move 0001_*.jpg 000
1 ) 无法将多个文件移动到单个文件中。 E:\000\0001_0000_0000.jpg E:\000\0001_0000_0001.jpg 这个错误提示很奇怪啊 我不理解 那个单个文件 是什么东西 怎么来的? |
|
| 第7楼 HAT | 发表于 2008-10-09 20:00 |
| 版主 发帖 5,017 积分 9,023 | |
|
Re 3楼 这样可以么?
|
|
| 第8楼 yefeng2651 | 发表于 2008-10-10 14:51 |
| 初级用户 发帖 16 积分 36 | |
Originally posted by buddiyar at 2008-10-9 18:37: 换成 @echo off for /f "delims=_" %%i in ('dir /a-d /b *.jpg') do (@echo %%i_*.jpg %%i || md %%i && move %%i_*.jpg %%i) Microsoft Windows XP (C) 版权所有 1985-2001 Microsoft Corp. E:\000>list2.cmd 0000_*.jpg 0000 0000_*.jpg 0000 0000_*.jpg 0000 0000_*.jpg 0000 0001_*.jpg 0001 0001_*.jpg 0001 0001_*.jpg 0001 0001_*.jpg 0001 E:\000> ———————— 之前 我也出现过这个问题,是因为 do 后加了 括号的问题 我的理解是 可以不能识别*的缘故,等高人指点! :) [ Last edited by yefeng2651 on 2008-10-10 at 15:20 ] |
|
| 第9楼 yefeng2651 | 发表于 2008-10-10 14:54 |
| 初级用户 发帖 16 积分 36 | |
Originally posted by HAT at 2008-10-9 20:00: 出现的是这个: E:\000>list4.cmd E:\000\0000_0000.jpg E:\000\0000_0001.jpg E:\000\0000_0002.jpg E:\000\0000_0003.jpg 子目录或文件 0000 已经存在。 子目录或文件 0000 已经存在。 子目录或文件 0000 已经存在。 E:\000\0001_0000.jpg E:\000\0001_0001.jpg E:\000\0001_0002.jpg E:\000\0001_0003.jpg 子目录或文件 0001 已经存在。 子目录或文件 0001 已经存在。 子目录或文件 0001 已经存在。 E:\000\0002_0000.jpg E:\000\0002_0001.jpg E:\000\0002_0002.jpg E:\000\0002_0003.jpg 子目录或文件 0002 已经存在。 子目录或文件 0002 已经存在。 子目录或文件 0002 已经存在。 E:\000> |
|
| 第10楼 tireless | 发表于 2008-10-10 16:13 |
| 银牌会员 发帖 1,122 积分 2,025 | |
|
[ Last edited by tireless on 2008-10-10 at 17:38 ] |
|
| 第11楼 huahua0919 | 发表于 2008-10-10 16:24 |
| 银牌会员 发帖 780 积分 1,608 | |
| 第12楼 yefeng2651 | 发表于 2008-10-10 17:48 |
| 初级用户 发帖 16 积分 36 | |
Originally posted by tireless at 2008-10-10 16:13: 呵呵,兄弟改得可真快,不过, /y 加与不加都没有关系的。没有出错的问题。 Originally posted by huahua0919 at 2008-10-10 16:24: 11楼的兄弟,你最狠,直接给屏蔽了。所以我也没有看到错误,不过可以肯定 一定有错误。只是我没看到 :P |
|
| 第13楼 tireless | 发表于 2008-10-10 18:40 |
| 银牌会员 发帖 1,122 积分 2,025 | |
|
[ Last edited by tireless on 2008-10-10 at 23:00 ] |
|
| 第14楼 huahua0919 | 发表于 2008-10-10 18:48 |
| 银牌会员 发帖 780 积分 1,608 | |
|
什么叫错误?如果又错误那就是你文件下所有JPG文件的格式不是你所说的那样,如果要用exist来判断说效率最高,那用>2的效率不知道要比exist快多少倍!
你说呢? |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |