. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』 » 专题:命令正则

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 关闭主题
 
主题工具
Naco
 
Naco 的头像
荣誉版主
 
资 料:
注册日期: Mar 2002
帖子: 9,417 声望值: 20
精华: 18,解答: 28
#1 旧 2010-10-01, 23:48:57 默认 已解答: 【求助】大批文件需要根据文件名自动创建文件夹来存放,求脚本或者工具软件
Naco 当前离线  

同一个目录内有成千上万张图片,图片的命名方式是这样的:

201032987_2_picture1.jpg
201032987_2_picture2.jpg
201032987_2_picture3.jpg
201032987_2_picture4.jpg
201032987_2_picture5.jpg
201032987_2_picture6.jpg
............
2009427797_2_picture1.jpg
2009427797_2_picture2.jpg
2009427797_2_picture3.jpg
2009427797_2_picture4.jpg
2009427797_2_picture5.jpg
............

现在想实现自动根据文件名的第一部分建立文件夹,然后把所有文件名第一部分相同的文件移动到这个目录中。

例如上面的,自动建立一个文件夹:201032987,然后把所有 201032987_*.jpg 的文件全部移动到新建的目录里头去。

不知道有没有能实现此操作的工具软件,或者命令行、脚本。

需要说明的是,第一段的长度不一定相等,像上面的例子就有个9位的有个10位的。

此帖于 2010-10-06 21:27:48 被 Naco 编辑. .


Follow Me: @Nacox
最佳解答为:mouze
其实用2楼的命令行就可以了,似乎Naco对批处理很不熟悉,我把命令行转换成批处理文件了:
代码:
@echo off
for /f "tokens=1,* delims=_" %%J in ('dir /b *.jpg') do (
    if not exist "%%J\" md "%%J"
    move /-y "%%J_%%K" "%%J"
    )
pause
把上述代码用记事本保存为a.cmd,放到图片文件夹里运行即可。
ccainiao
 
ccainiao 的头像
高级会员
 
资 料:
注册日期: Sep 2002
帖子: 1,005 声望值: 3
精华: 9,解答: 15
#2 旧 2010-10-02, 00:42:54 默认
ccainiao 当前离线  

for /f "tokens=1* delims=_" %a in ('dir /b *.jpg') do md %a & move %a_%b %a

以上请参考。运行时会有个文件夹已存在的报错,为了批处理简单一点,就不处理了
_森森_
 
_森森_ 的头像
热心会员
 
资 料:
注册日期: Feb 2010
帖子: 1,268 声望值: 5
精华: 0,解答: 31
#3 旧 2010-10-02, 10:41:38 默认
_森森_ 当前离线  

try file2folder
http://code.google.com/p/file2foldergui/
Amyoung
 
Amyoung 的头像
超级会员
 
资 料:
注册日期: Feb 2001
帖子: 1,030 声望值: 3
精华: 0
#4 旧 2010-10-02, 20:15:24 默认
Amyoung 当前离线  

我也有一个类似的问题。一文件夹下有大量不同文件名、相同文件类型的文件。想提取特定的某些文件到另一文件夹,已有想提取文件的文件名列表(存放在TXT文档中)。一个个提取实在是太麻烦,目前没找到有效的方法。
BlueFang
 
BlueFang 的头像
核心会员
 
资 料:
注册日期: Apr 2008
帖子: 2,637 声望值: 3
精华: 4,解答: 25
#5 旧 2010-10-02, 21:24:34 默认
BlueFang 当前离线  

引用:
作者: Amyoung 查看帖子
我也有一个类似的问题。一文件夹下有大量不同文件名、相同文件类型的文件。想提取特定的某些文件到另一文件夹,已有想提取文件的文件名列表(存放在TXT文档中)。一个个提取实在是太麻烦,目前没找到有效的方法。
用ultraedit之类文本编辑器打开txt文件,假设你要移动这些文件到D:\xx目录
替换“^p”为“ D:\xx\*.*^pmove ”,不包含引号,但包含两个空格。
除了首尾两行,其他行都变成了下面的格式。
move abc.jpg D:\xx\*.*
首尾两行手工修改下,另存该文本为批处理即可。


AMD双核 我只信赖938针
登高山而望四海
LiVEZ.ORG
Amyoung
 
Amyoung 的头像
超级会员
 
资 料:
注册日期: Feb 2001
帖子: 1,030 声望值: 3
精华: 0
#6 旧 2010-10-02, 21:41:13 默认
Amyoung 当前离线  

非常感谢,已搞定。
Naco
 
Naco 的头像
荣誉版主
 
资 料:
注册日期: Mar 2002
帖子: 9,417 声望值: 20
精华: 18,解答: 28
#7 旧 2010-10-03, 02:15:59 默认
Naco 当前离线  

引用:
作者: ccainiao 查看帖子
for /f "tokens=1* delims=_" %a in ('dir /b *.jpg') do md %a & move %a_%b %a

以上请参考。运行时会有个文件夹已存在的报错,为了批处理简单一点,就不处理了
这个如何运行??
Naco
 
Naco 的头像
荣誉版主
 
资 料:
注册日期: Mar 2002
帖子: 9,417 声望值: 20
精华: 18,解答: 28
#8 旧 2010-10-03, 02:17:00 默认
Naco 当前离线  

引用:
作者: _森森_ 查看帖子
试了一下,这个软件只能处理文件名完全一样的文件,对于文件名只有一部分相同的无能为力。
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 5,079 声望值: 5
精华: 18,解答: 28
#9 旧 2010-10-04, 12:08:07 默认
ASBai 当前离线  

实在搞不定的话帮你写个小工具好了


baiy.cn
俺的原创免费作品站
namejm
 
namejm 的头像
超级会员
 
资 料:
注册日期: Apr 2009
帖子: 1,354 声望值: 3
精华: 20,解答: 82
#10 旧 2010-10-04, 13:14:07 默认
namejm 当前离线  

  楼主的这个问题用批处理很容易搞定,难点在于多次运行批处理的时候,如何能检测到这些图片已经按照规则整理好了,否则,下一次再运行的时候,将会在子目录201032987下再建立201032987这样的子文件夹,那时候就悲剧了,不过这个问题用批处理也好解决。


TotalCommder、EveryThing、batch、AutoHotKey、EverEdit
精通Word、Excel、PPT的安装与卸载
熟练掌握VB、C++、SQL的拼读与缩写
Naco
 
Naco 的头像
荣誉版主
 
资 料:
注册日期: Mar 2002
帖子: 9,417 声望值: 20
精华: 18,解答: 28
#11 旧 2010-10-06, 21:25:28 默认
Naco 当前离线  

引用:
作者: ASBai 查看帖子
实在搞不定的话帮你写个小工具好了
如果不是太麻烦的话就帮个忙吧~~ :blush;
mouze
 
mouze 的头像
热心会员
 
资 料:
注册日期: Apr 2002
帖子: 8,208 声望值: 13
精华: 5,解答: 65
#12 旧 2010-10-06, 21:44:16 默认
mouze 当前离线  

其实用2楼的命令行就可以了,似乎Naco对批处理很不熟悉,我把命令行转换成批处理文件了:
代码:
@echo off
for /f "tokens=1,* delims=_" %%J in ('dir /b *.jpg') do (
    if not exist "%%J\" md "%%J"
    move /-y "%%J_%%K" "%%J"
    )
pause
把上述代码用记事本保存为a.cmd,放到图片文件夹里运行即可。
Naco
 
Naco 的头像
荣誉版主
 
资 料:
注册日期: Mar 2002
帖子: 9,417 声望值: 20
精华: 18,解答: 28
#13 旧 2010-10-07, 23:38:26 默认
Naco 当前离线  

引用:
作者: mouze 查看帖子
其实用2楼的命令行就可以了,似乎Naco对批处理很不熟悉,我把命令行转换成批处理文件了:
[CODE]@echo off
for /f "tokens=1,* delims=_" %%J in ('dir /b *.jpg') do (
if not exist "%%J\" md "%%J"
move...
搞定搞定,谢谢!
发表新主题 关闭主题

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 11:24:42.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号