信仰 发表于 2009-5-5 17:10

[已完成]这里有程序牛人吗

能否帮忙写个小程序,要求如下
读一个目录下的文件的文件名,然后根据文件名(不要后缀)创建文件夹,再把的文件MOVE到相对应的文件里。例如
目录A下有文件 a.jpg,b.jpg,c.jpg 运行程序后,A目录下多了三个文件夹:a,b,c,里面分别存放着a.jpg,b.jpg,c.jpg

[ Edited by信仰 on 2009-5-7 09:38 ]

citroenc5 发表于 2009-5-5 17:23

easy

hlxyhqc 发表于 2009-5-5 17:27

very easy.

信仰 发表于 2009-5-5 18:37

给比较好实现的给100NB。
要求有比较好的通用性。有一个简单操作界面。

[ Edited by信仰 on 2009-5-5 18:38 ]

sk1418 发表于 2009-5-5 18:45

简单写了个

1,希望你有cygwin
2. 你要处理的主目录作为参数,你的例子就是c:\a不要最后的斜线,懒了,没处理
3. 如果你的文件没有扩展名,没测试好使不。
4. 如果多个文件名相同,仅扩展名不同也没关系,看测试例子。

代码:

#!/bin/bash
BASEDIR="$1"/*

for MYFILE in $BASEDIR
do
    if [ -f $MYFILE ]
    then
       MYDIR=${MYFILE%.*}
       if [ ! -d $MYDIR ] #everything ok, mkdir, then move
       then
            `mkdir $MYDIR`
            `mv $MYFILE $MYDIR`
       else   # dir exists, only mv is needed.
            `mv $MYFILE $MYDIR`
       fi

    fi
done



测试:

kent@R60:~/Desktop/test$ touch a.foo b.foo c.foo b.bar
kent@R60:~/Desktop/test$ ls -l
total 0
-rw-r--r-- 1 kent kent 0 2009-05-05 12:39 a.foo
-rw-r--r-- 1 kent kent 0 2009-05-05 12:39 b.bar
-rw-r--r-- 1 kent kent 0 2009-05-05 12:39 b.foo
-rw-r--r-- 1 kent kent 0 2009-05-05 12:39 c.foo
kent@R60:~/Desktop/test$ cd ..
kent@R60:~/Desktop$ ./test.sh /home/kent/Desktop/test
kent@R60:~/Desktop$ cd test/
kent@R60:~/Desktop/test$ ls -lR
.:
total 12
drwxr-xr-x 2 kent kent 4096 2009-05-05 12:40 a
drwxr-xr-x 2 kent kent 4096 2009-05-05 12:40 b
drwxr-xr-x 2 kent kent 4096 2009-05-05 12:40 c

./a:
total 0
-rw-r--r-- 1 kent kent 0 2009-05-05 12:39 a.foo

./b:
total 0
-rw-r--r-- 1 kent kent 0 2009-05-05 12:39 b.bar
-rw-r--r-- 1 kent kent 0 2009-05-05 12:39 b.foo

./c:
total 0
-rw-r--r-- 1 kent kent 0 2009-05-05 12:39 c.foo
kent@R60:~/Desktop/test$

sk1418 发表于 2009-5-5 18:46

回帖晚了,没看到你上面那个要求,这个小东西还要求界面。。。。
算了,忽略我上面的帖子吧。

269569 发表于 2009-5-5 18:51

回复 #5 sk1418 的帖子

哥们 你这还要预装运行环境
电脑被偷了
不然就直接写个exe程序了

信仰 发表于 2009-5-5 19:00

回复 #6 sk1418 的帖子

希望是个EXE程序,有个小界面可以通用一些。10朵小花送上。楼下继续。。。。

sk1418 发表于 2009-5-5 19:32

Posted by 269569 on 2009-5-5 11:51 http://www.ibmnb.com/images/common/back.gif
哥们 你这还要预装运行环境
电脑被偷了
不然就直接写个exe程序了

各人用WINDOWS的习惯不一样,我是装好硬件驱动后第一个软件就是cygwin。所以对我没有“预装运行环境”的问题。估计用cygwin的少不了就好歹写了个脚本。如果帮不上那就sorry了。
其实python, java弄个程序再弄成EXE也行。下面的继续帮楼主吧。

谢谢楼主还给了10NB。



偷偷问下NB怎么花?

williamjeans 发表于 2009-5-5 20:18

晕,程序写多了,再小的程序也不原写,再写就疯掉了

ZiDing 发表于 2009-5-5 20:27

这么简单,还要啥程序。如下内容保存到你的那个根目录为1.bat,然后双击运行即可。
for %%f in (*.jpg) do (
if not exist "%%~nf" mkdir "%%~nf"
move "%%f" ".\%%~nf\"
)

nicknee 发表于 2009-5-5 22:31

来看牛人

linze 发表于 2009-5-5 22:38

试试看

试试看
试试看
试试看

信仰 发表于 2009-5-5 23:00

ziding的程序语言真是用到家了,精干!
linze的程序也很好用。
两位各转了50nb,请查收!

ZiDing 发表于 2009-5-5 23:04

回复 #14 信仰 的帖子

不是100吗?被骗了啊:') :') :') :') :')

馅饼 发表于 2009-5-5 23:16

看看这么厉害牛人啊。

dos学的好

sk1418 发表于 2009-5-5 23:19

别哭,我的shell 脚本没帮上LZ,LZ还给了10块钱。反正我也不会花。转给你了。
而且发现就能给10块,给不多阿!

ZiDing 发表于 2009-5-5 23:25

回复 #17 sk1418 的帖子

谢谢兄弟了。我前面和楼主开玩笑呢

信仰 发表于 2009-5-6 11:54

ziding的批处理指令写得真是很强大,十分佩服,一会查一查好好理解一下。
LINZE不知道用什么编的,对我解决问题最好。
SK1418,要想多转NB,就得用控制面板里的NB转帐功能了。
虽然ZIDING和我开玩笑,不过我决定再给ZIDING和LINZE再各转50NB,补齐100NB,请查收。

ZiDing 发表于 2009-5-6 12:05

回复 #19 信仰 的帖子

玩笑的,兄弟,谢谢了:$

大洗衣盆 发表于 2009-5-6 12:37

人才济济.

citroenc5 发表于 2009-5-6 12:43

ZiDing   能解释下吗?
看不懂

brqtpt007 发表于 2009-5-6 15:09

牛BB哄

信仰 发表于 2009-5-6 15:33

看了半天批处理的文章,有点眉目,不过头也晕了。
唯一一点,if not exist "%%~nf"
这句中能不能用if not exist "%%f" 来代替?
查了文章说~n在这里应该是代表扩展环境变量的意思,但是没搞明白这两句的不同之处,请ZiDing或明白的解析一下。谢谢

信仰 发表于 2009-5-6 15:35

另外,linze能否介绍一下你的代码?

ZiDing 发表于 2009-5-6 15:54

Posted by 信仰 on 2009-5-6 15:33 http://www.ibmnb.com/images/common/back.gif
看了半天批处理的文章,有点眉目,不过头也晕了。
唯一一点,if not exist "%%~nf"
这句中能不能用if not exist "%%f" 来代替?
不能
查了文章说~n在这里应该是代表扩展环境变量的意思,但是没搞明白这两句的不同 ...
%%~nf 表示的意思是:将该环境变量的值设置为文件名,比如说F这里的值为123.jpg那么这里的f的值就会被替换为123而不是123.jpg

ZiDing 发表于 2009-5-6 15:56

Posted by citroenc5 on 2009-5-6 12:43 http://www.ibmnb.com/images/common/back.gif
ZiDing   能解释下吗?
看不懂
这些都是批处理的东西,我不知道改怎么说。
第一句for就是遍历所有的当前目录下的jpg文件,第二句是判断这个jpg同名的目录是否存在,然后第三句是移动文件到目录里面。

rtm009 发表于 2009-5-6 17:50

进来拜拜牛人 :D

没故事的男孩 发表于 2009-5-6 18:00

真后悔当初学批处理的时候没有好好学if....

wokin 发表于 2009-5-6 18:14

回复 #6 sk1418 的帖子

辛苦了 啊
页: [1] 2 3
查看完整版本: [已完成]这里有程序牛人吗