中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [讨论]文件分类的问题。 上一主题 | 下一主题
yefeng2651
初级用户





积分 36
发帖 16
注册 2006-7-5
状态 离线
『楼 主』:  [讨论]文件分类的问题。

问题: 一目录下 有 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> 可以看到有重复的行为。浪费资源。 请大家讨论。


2008-10-9 17:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yefeng2651
初级用户





积分 36
发帖 16
注册 2006-7-5
状态 离线
『第 2 楼』:  

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命令行下 这个怎么打哦?


2008-10-9 17:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yefeng2651
初级用户





积分 36
发帖 16
注册 2006-7-5
状态 离线
『第 3 楼』:  

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> ------------ 不知如何解决!


2008-10-9 17:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yefeng2651
初级用户





积分 36
发帖 16
注册 2006-7-5
状态 离线
『第 4 楼』:  

最后谢谢各位帮助我的,及群里的各位听我唠叨的。 留下痕迹,以助后来者 :)


2008-10-9 17:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Vampire
初级用户





积分 176
发帖 78
注册 2007-4-15
状态 离线
『第 5 楼』:  

纯DOS好象FOR就支持环境变量的读取...........


2008-10-9 17:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
buddiyar
初级用户





积分 160
发帖 75
注册 2006-6-28
状态 离线
『第 6 楼』:  

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 这个错误提示很奇怪啊 我不理解 那个单个文件 是什么东西 怎么来的?


2008-10-9 18:37
查看资料  发送邮件  发短消息 网志  OICQ (243589543)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 7 楼』:  Re 3楼

这样可以么?
@echo off
for /f "delims=_" %%i in ('dir /a-d /b *.jpg') do (move %%i_*.jpg %%i 2>nul|| md %%i && move %%i_*.jpg %%i)




2008-10-9 20:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yefeng2651
初级用户





积分 36
发帖 16
注册 2006-7-5
状态 离线
『第 8 楼』:  

Originally posted by buddiyar at 2008-10-9 18:37: 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 这个错 ...
换成 @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 [版本 5.1.2600] (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 ]


2008-10-10 14:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yefeng2651
初级用户





积分 36
发帖 16
注册 2006-7-5
状态 离线
『第 9 楼』:  

Originally posted by HAT at 2008-10-9 20:00: 这样可以么?
@echo off
for /f "delims=_" %%i in ('dir /a-d /b *.jpg') do (move %%i_*.jpg %%i 2>nul|| md %%i && move %%i_*.jpg %%i)
出现的是这个: 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>


2008-10-10 14:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 10 楼』:  

@echo off
for /f "delims=_" %%a in ('dir /b *.jpg') do (
     if not exist %%a md %%a
     if exist %%a_*.jpg move /y %%a_*.jpg %%a>nul
)
[ Last edited by tireless on 2008-10-10 at 17:38 ]


2008-10-10 16:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 11 楼』:  

@echo off 
for /f "tokens=1* delims=_" %%i in ('dir/b/a-d *.jpg') do (
md %%i >nul 2>nul
move /y "%%i_%%j" %%i
)


2008-10-10 16:24
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
yefeng2651
初级用户





积分 36
发帖 16
注册 2006-7-5
状态 离线
『第 12 楼』:  

Originally posted by tireless at 2008-10-10 16:13:
@echo off
for /f "delims=_" %%a in ('dir /b *.jpg') do (
     if not exist %%a md %%a
     if exist %%a_*.jpg move /y %%a_*.jpg %%a>nul
)
[ Last edited by tireless ...
呵呵,兄弟改得可真快,不过, /y 加与不加都没有关系的。没有出错的问题。
Originally posted by huahua0919 at 2008-10-10 16:24:
@echo off 
for /f "tokens=1* delims=_" %%i in ('dir/b/a-d *.jpg') do (
md %%i >nul 2>nul
move /y "%%i_%%j" %%i
)
11楼的兄弟,你最狠,直接给屏蔽了。所以我也没有看到错误,不过可以肯定 一定有错误。只是我没看到 :P


2008-10-10 17:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 13 楼』:  

  [ Last edited by tireless on 2008-10-10 at 23:00 ]


2008-10-10 18:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 14 楼』:  

什么叫错误?如果又错误那就是你文件下所有JPG文件的格式不是你所说的那样,如果要用exist来判断说效率最高,那用>2的效率不知道要比exist快多少倍! 你说呢?


2008-10-10 18:48
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: