今天写了第一个Ruby程序:3行

今天写了第一个Ruby程序:3行

因为工作上的原因,需要把路径(D:\Temp\body)中的所有图片按一份TXT文档(D:\Temp\Nbody.txt)中的形式改名。

下面是Nbody.txt中的内容,一行放置了一张图片的最终名称。现在D:\Temp\body\中的图片名称是“RB-”至行尾的名称(如:RB-1440.gif),要求就是要把这些图片的名称在“RB”前面加上“802-”等字符,这些字符没有规律,但在下面的行中已经列出。

802-RB-1440.gif
810-RB-1447.gif
832-RB-1448.gif
228738-RB-1004933.jpg
219856-RB-7354.jpg
221085-RB-8609.jpg
219871-RB-7369.jpg
219885-RB-7381.jpg
220075-RB-7520.jpg
221107-RB-8640.jpg
221313-RB-9069.jpg
221318-RB-9074.jpg
221319-RB-9075.jpg
221329-RB-9115.jpg
221331-RB-9117.jpg
1007465-RB-1001835.jpg
221187-RB-8814.jpg
2901-RB-3380.jpg
2910-RB-3424.jpg
219921-RB-7394.jpg
219932-RB-7405.jpg
220026-RB-7477.jpg
221147-RB-8670.jpg
221153-RB-8700.jpg
221158-RB-8725.jpg
221163-RB-8734.jpg
221167-RB-8738.jpg
221173-RB-8760.jpg
221181-RB-8800.jpg
221265-RB-8945.jpg
221274-RB-8986.jpg
221277-RB-9000.jpg
221280-RB-9011.jpg
221696-RB-9980.jpg
1015164-RB-1003189.jpg
1015169-RB-1003194.jpg
1015170-RB-1003195.jpg
1015173-RB-1003198.jpg
221215-RB-8847.jpg
2929-RB-3471.jpg
2941-RB-3475.jpg
219974-RB-7442.jpg
1013027-RB-1002662.gif
1013060-RB-1002695.gif
1013072-RB-1002707.gif
1013075-RB-1002710.gif
219986-RB-7454.jpg
221310-RB-9066.jpg
221312-RB-9068.jpg
2967-RB-3493.jpg
221220-RB-8858.jpg
221225-RB-8866.jpg
221691-RB-9969.jpg
2987-RB-3534.gif
221232-RB-8891.jpg
221235-RB-8906.jpg
221307-RB-9063.jpg
1007596-RB-1001839.gif
1007598-RB-1001841.gif

----------------
编码实现如下:

file=File.open("D:\\Temp\\Nbody.txt")
file.each{|line| system "rename D:\\Temp\\body\\#{line[/RB-.+$/]} #{line}"}
file.close

---------------
简单说下思路:
打开Nbody.txt文档,对每一行的对象通过正则表达式切割为路径中的图片名称,即通过Nbody.txt文档获得图片原来的名称,然后将关于此名称的图片文件重命名为行对象的内容(调用OS的rename命令操作)。
最后关闭Nbody.txt文档。

感想:
3条语句就把工作做完了,感觉R u b y的功能实在是强大,而且语法上很接近人的思考方式,用起来非常自然。

不像是新人。
有第一个ruby程序就写这样的哈?
楼主太强了,看来ruby的魅力无限啊:)
学海无涯啊
学习了,正在慢慢感受Ruby
正则表达式部分没有看懂#{line[/RB-.+$/]} #{line}
为什么不直接用 File.rename(oldname,rewname)