本帖最后由 minbiao 于 2010-6-28 14:56 编辑
运用水木子大大给的代码,小弟写了一个批量处理的,但是遇到个问题,小弟新生,写的不好望指点!
#扫描'\文件'文件夹下的所有ini,列出VOD<>'1'的ini文件路径到'\Log.txt',读取'\Log.txt'所列出的文件路径,
逐个进行处理,把结果输出到'\pcname.ini'中。
遇到一个问题,就是输出的结果会重叠到下一行,如:
[列表]
D盘.ini=MP3=2 GB;RM=1 GB;AVI=768 MB;MKV=512MB;
E盘.ini=MP3=2 GB;RM=1 GB;AVI=768 MB;MKV=512MB;MP3=3 GB;RM=5 GB;AVI=1 GB;MKV=1 GB;
D盘.ini的结果会写到E盘.ini的前面, 应该怎么解决呢?
-----------------------------------------#include <File.au3>
$Dir = @ScriptDir & '\文件'
$File = _FileListToArray($Dir, '*.ini', 1)
If @error Then Exit MsgBox(48, "错误", "错误001!")
Local $sText, $sResult, $File
Dim $data = '', $txtFile = @ScriptDir & '\Log.txt', $aFile
For $i = 1 To $File[0]
$s_File = $Dir & '\' & $File[$i]
$val = IniRead($s_File, "VOD", "VOD", "")
If $val <> '1' Then $data &= $s_File & @CRLF
Next
FileWrite($txtFile, $data)
_FileReadToArray($txtFile, $aFile)
If $aFile = "" Then
Exit
Else
For $i = 1 To $aFile[0]
$sText = FileRead($aFile[$i])
$aReg = StringRegExp($sText, ': (\w+=\d+ [A-Z]+) ', 3)
For $ii = 0 To UBound($aReg) - 1
$sResult &= $aReg[$ii] & ';'
IniWrite(@ScriptDir & '\pcname.ini',"列表", $File[$i], $sResult)
Next
IniWrite($aFile[$i], "VOD", "VOD", "1")
Next
FileClose(FileOpen(@ScriptDir & '\Log.txt', 2));清空Log文件
Endif
|