[已完成]这里有程序牛人吗
能否帮忙写个小程序,要求如下读一个目录下的文件的文件名,然后根据文件名(不要后缀)创建文件夹,再把的文件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 ] easy very easy. 给比较好实现的给100NB。
要求有比较好的通用性。有一个简单操作界面。
[ Edited by信仰 on 2009-5-5 18:38 ] 简单写了个
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$
回帖晚了,没看到你上面那个要求,这个小东西还要求界面。。。。
算了,忽略我上面的帖子吧。
回复 #5 sk1418 的帖子
哥们 你这还要预装运行环境电脑被偷了
不然就直接写个exe程序了
回复 #6 sk1418 的帖子
希望是个EXE程序,有个小界面可以通用一些。10朵小花送上。楼下继续。。。。 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怎么花? 晕,程序写多了,再小的程序也不原写,再写就疯掉了 这么简单,还要啥程序。如下内容保存到你的那个根目录为1.bat,然后双击运行即可。
for %%f in (*.jpg) do (
if not exist "%%~nf" mkdir "%%~nf"
move "%%f" ".\%%~nf\"
) 来看牛人
试试看
试试看试试看
试试看 ziding的程序语言真是用到家了,精干!
linze的程序也很好用。
两位各转了50nb,请查收!
回复 #14 信仰 的帖子
不是100吗?被骗了啊:') :') :') :') :') 看看这么厉害牛人啊。dos学的好 别哭,我的shell 脚本没帮上LZ,LZ还给了10块钱。反正我也不会花。转给你了。
而且发现就能给10块,给不多阿!
回复 #17 sk1418 的帖子
谢谢兄弟了。我前面和楼主开玩笑呢 ziding的批处理指令写得真是很强大,十分佩服,一会查一查好好理解一下。LINZE不知道用什么编的,对我解决问题最好。
SK1418,要想多转NB,就得用控制面板里的NB转帐功能了。
虽然ZIDING和我开玩笑,不过我决定再给ZIDING和LINZE再各转50NB,补齐100NB,请查收。
回复 #19 信仰 的帖子
玩笑的,兄弟,谢谢了:$ 人才济济. ZiDing 能解释下吗?看不懂 牛BB哄 看了半天批处理的文章,有点眉目,不过头也晕了。
唯一一点,if not exist "%%~nf"
这句中能不能用if not exist "%%f" 来代替?
查了文章说~n在这里应该是代表扩展环境变量的意思,但是没搞明白这两句的不同之处,请ZiDing或明白的解析一下。谢谢 另外,linze能否介绍一下你的代码? 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 Posted by citroenc5 on 2009-5-6 12:43 http://www.ibmnb.com/images/common/back.gif
ZiDing 能解释下吗?
看不懂
这些都是批处理的东西,我不知道改怎么说。
第一句for就是遍历所有的当前目录下的jpg文件,第二句是判断这个jpg同名的目录是否存在,然后第三句是移动文件到目录里面。 进来拜拜牛人 :D 真后悔当初学批处理的时候没有好好学if....