nmgwddj 发表于 2010-3-20 18:05:16

获取文件属性相关!(已解决)

本帖最后由 nmgwddj 于 2010-3-20 18:45 编辑




如图 如何获取到文件的这个信息??获取文件信息貌似只能获取到时间和文件属性

正在做打补丁的工具。希望高手支个招。

或者用正则 帮咱把WindowsXP-KB895961-v4-x86-CHS这个文件名替换成KB895961

正在看正则30分钟入门。我是一点都没明白过来:face (30):

lynfr8 发表于 2010-3-20 18:16:30

$Value = 'WindowsXP-KB895961-v4-x86-CHS'
$array= StringRegExp($Value, "WindowsXP-(.+)-v4-x86-CHS", 3)
for $i = 0 to UBound($array) - 1
msgbox(0, "正则" & $i, $array[$i])
Next
仅针对楼主你给出的一段字符串'WindowsXP-KB895961-v4-x86-CHS'

nmgwddj 发表于 2010-3-20 18:29:49

回复 2# lynfr8


    非常感谢您的代码。

因为不同更新补丁的工具会下载出不一样的文件名。
比如刚才那个WindowsXP-KB895961-v4-x86-CHS
还有可能是KB895961
或者KB895961-v4-x86-CHS等等。
正则的确不会太用 请教您了。希望能帮忙给改一下

lynfr8 发表于 2010-3-20 18:31:30

你把文件列表用textcatch捕捉一份贴上来

nmgwddj 发表于 2010-3-20 18:35:35

回复 4# lynfr8


    WindowsXP-KB895961-v4-x86-CHS

目的很简单。假设上边这段文字。除KB895961以外的全部删除!

nmgwddj 发表于 2010-3-20 18:42:14

还是谢谢你了。稍微改了下代码。可以达到目的了

$Value = 'WindowsXP-KB895961-v4-x86-CHS'
$array= StringRegExp($Value, ".*(KB.+)", 3)
for $i = 0 to UBound($array) - 1
msgbox(0, "正则" & $i, $array[$i])
Next

用StringMid在分吧

afan 发表于 2010-3-20 19:31:47

本帖最后由 afan 于 2010-3-20 19:43 编辑

回复 6# nmgwddj $Str = 'WindowsXP-KB895961-v4-x86-CHS'
;$Str = 'KB895961-v4-x86-CHS' ;这个也行
;$Str = 'KB895961' ;这个也行
$Str = StringRegExpReplace($Str, '.*?(KB\d+)[^\d]*?.*', '$1')
Msgbox(0, 0, $str)

masterpcc 发表于 2010-3-20 20:37:35

新手!学习中!

nmgwddj 发表于 2010-3-20 21:14:06

谢谢afan 你的代码同样可以。不用加StringMid了

dabaiyun 发表于 2010-4-6 12:46:18

新手!学习中!

netegg 发表于 2010-4-6 12:53:17

本帖最后由 netegg 于 2010-4-6 12:55 编辑

# include<array.au3>
$aArray = stringsplit($word, '-')
$i = _arraysearch($aArray, 'KB', 0, 0, 0, 1)
msgbox('','', $aArray[$i])

nmgwddj 发表于 2010-4-6 12:54:47

楼上的是尽量避开正则啊:face (26):
不逼到一定程度绝对不会用:face (26):

netegg 发表于 2010-4-6 12:55:29

惭愧,我不会正则

nmgwddj 发表于 2010-4-6 12:56:53

同样。都是这么被逼出来的:face (13):

netegg 发表于 2010-4-6 13:00:10

本帖最后由 netegg 于 2010-4-6 13:01 编辑

个人一直认为正则只是在大量重复使用同类型同结构字符串的时候,效率高,不过调试的时候,未必
用scite里面的精简代码可见一斑,那个替换完了几乎全是正则
页: [1]
查看完整版本: 获取文件属性相关!(已解决)