打印

[求助] Shell 脚本初学小菜鸟请教高手!谢谢

本主题由 mwpq 于 2007-11-7 09:00 关闭

Shell 脚本初学小菜鸟请教高手!谢谢

各位高手大家好,我刚开始接触到Shell编程,一个好朋友给了我这样一道题目,
7 N: @5 K- T0 S# T9 Y2 L8 w用shell编辑一个脚本,完成如下功能,对于一个文件夹下面的所有文件,对于有.dat结尾的,不变,
0 [) D4 d b0 a7 M/ O6 c6 E+ K对于没有.dat结尾的,加一个.dat结尾
: x/ m) N! a6 |3 e, y小弟初学此技术,一点思路都没有,苦恼不已,希望得到高手指点,我愿拜各位高手为师,彻底明白这
" L2 H6 ?* ?9 h8 \# N0 X道题,小弟先有礼了!
' D7 d7 e/ |5 D7 P5 P" x我的E-mail&MSN:zhengweiorg@hotmail.com
" j) [4 }) f# ]- P% u* z! oQQ:188921225
欢迎到我的BLOG坐坐
http://zhengweiorg.blog.sohu.com

TOP

folderPath = InputBox("输入文件夹路径,如""D:\123""") 3 O R) c6 v4 r& u6 c
Set oFSO = CreateObject("Scripting.FileSystemObject")
# ~$ v. m. a* CIf oFSO.FolderExists(folderPath) Then7 [9 I$ W5 z% P# d" a
Set oFolder = oFSO.GetFolder(folderPath)2 [! @2 z: g0 K/ C0 M# R
Set oFiles = oFolder.Files1 `1 @1 n- H3 u7 H9 q
For Each oFile In oFiles
! [. C" N' q3 _& U' M If ofile.type <> "MS-DOS 批处理文件" Then% h7 `7 b0 B3 C. s
ofile.name = ofile.name & ".bat"
, ~/ [6 Y) v" H, @& m% R$ p$ p6 u End If
! d" d" b+ J; T4 W F( yNext
- p3 x3 W5 o* G7 RElse
7 [ h% b# U+ vWScript.Echo "文件夹不存在") ]/ ^; n5 U5 B" w" \, g& M
End If
本帖最近评分记录
  • mwpq 菊花元 +10 well done 2007-8-28 12:48

TOP

此脚本只能在中文系统上使用.

TOP

2楼的长老说的的不太正确吧。
! z& m j* f6 b5 Z8 ?& Q楼主的文件是dat类型不是bat类型的
! ]4 z% x# G( u* _4 s% Q3 |
& @/ ?2 @# H+ y: U4 W! G5 o% @这个可能需要用到正则表达式,我对于这个也不时很明白,
5 N6 w- e! x) Z( H* S1 A思路是:, b! s$ m5 F, Z( m$ y) m
1,首先取得文件名列表
, C3 w, h" d7 a 2,通过文件名与正则表达式的比较获得需要加入dat的名字
: R6 M& ^& D" O 3,重命名

TOP

如果文件不多的话.
- w, I$ z/ d9 M9 r6 Q0 r1 O. `, [4 G" y5 u; o, i* H) C
可以强制性全改一次.
笑一笑,跳一跳!

TOP

引用:
原帖由 tiencosun 于 2007-9-7 16:54 发表 ( v' m9 D* x: R3 }9 z
2楼的长老说的的不太正确吧。
9 x; o! p% O* V: J5 {% j楼主的文件是dat类型不是bat类型的7 O$ C/ h6 \# N& i2 Y

5 p+ N2 \- O, r* X2 W; O3 P这个可能需要用到正则表达式,我对于这个也不时很明白,# L! s" z( \( i$ d
思路是: Q7 X r( M/ `1 _) `- j
1,首先取得文件名列表
$ p1 {. G% n, r) L6 q2,通过文件名与正则表达式的比较获得需要加入dat ...
6 v) i. x+ g8 |$ i
8 b9 o' d; A0 U3 j
这很明显是我把dat看成bat了嘛,你怎么扯到正则去了,八竿子打不着的事情,弄得那么复杂干什么。只需要改几个字就好了:
复制内容到剪贴板
代码:
folderPath = InputBox("输入文件夹路径,如""D:\123""")
Set oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FolderExists(folderPath) Then
Set oFolder = oFSO.GetFolder(folderPath)
Set oFiles = oFolder.Files
For Each oFile In oFiles
'WScript.Echo oFile.type
If ofile.type <> "电影剪辑(DAT)" Then
ofile.name = ofile.name & ".dat"
End If
Next
Else
WScript.Echo "文件夹不存在"
End If

TOP