Здравствуйте, снова нужна помощь.
Собственно тема уже избитая как я понимаю, поиск выдал множество ответов.
На их основе был собран скрипт, но проблема заключается в следующем:
Файл на дисках он находит но по почему то не заменяет.
Сам скрипт:
Ссылки на первичные источники информации:
http://autoit-script.ru/index.php/topic,4818.0.html
http://autoit-script.ru/index.php/topic,8950.0.html
http://autoit-script.ru/index.php/topic,5028.0.html
Заранее спасибо за помощь!
P.S. системы на которых тестил: Windows 7 x64, Windows XP, Windows 7 x86
P.S.2. на Windows 7 x64 находит и заменяет только на диске С
P.S.3. на Windows XP может или найти и заменить или найти и не заменить
P.S.4. на Windows 7 x86 не находит
P.S.5. для Windows 7 x64 - компилировал 64-х битную версию, для остальных соответственно.
P.S.6. для Windows 7 x64 и Windows 7 x86 запуск скрипта с админ правами
Не могу никак понять почему в одних случаях он работает в других либо совсем не работает либо на половину.
Собственно тема уже избитая как я понимаю, поиск выдал множество ответов.
На их основе был собран скрипт, но проблема заключается в следующем:
Файл на дисках он находит но по почему то не заменяет.
Сам скрипт:
Код:
#AutoIt3Wrapper_Res_requestedExecutionLevel=highestAvailable
FileInstall('MasterServers.vdf', @TempDir & '\MasterServers.vdf', 1)
$sFileReplase = @TempDir&"\MasterServers.vdf" ;файл на который будем менять все найденные
$iCount = 0 ;счетчик замены
$sFileName = StringRegExpReplace($sFileReplase, '^.*\\', '')
$aDrive = DriveGetDrive('FIXED') ; ДЛЯ ВСЕХ ДИСКОВ
For $i = 1 To $aDrive[0]
$aSearch = _FileSearch($aDrive[$i], $sFileName, 1)
For $m = 1 To $aSearch[0]
FileCopy($sFileReplase, $aSearch[$m], 1)
$iCount += 1
Next
Next
Func _FileSearch($s_Path_Search, $s_File_Mask = '*', $i_Flag = 0, $i_SubDir = 1)
;фильтры для поиска нужно указывать через ;
;$i_Flag = 0 - Файлы и папки (по умолчанию)
;$i_Flag = 1 - Только файлы
;$i_Flag = 2 - Только папки
;$i_SubDir = 1 - Искать во всех подкаталогах (по умолчанию). Возвращает полные пути.
;$i_SubDir = 0 - Искать только в самой папке. Возвращает только имена файлов(папок).
Local $s_Out, $a_Out, $s_Read, $h_Dir, $s_Attrib, $s_Subdir, $a_Masks
If StringRight($s_Path_Search, 1) == '\' Then ;нужно, если $s_Path_Search - диск (например C:\)
$s_Path_Search = StringTrimRight($s_Path_Search, 1)
EndIf
If $i_SubDir Then
$s_Subdir = ' /S /B'
Else
$s_Subdir = ' /B'
EndIf
Switch $i_Flag
Case 1
$s_Attrib = ' /A-D'
Case 2
$s_Attrib = ' /AD'
Case Else
$s_Attrib = ' /A'
EndSwitch
$s_Out = StringToBinary('0' & @CRLF, 2)
$a_Masks = StringSplit($s_File_Mask, ';')
For $i = 1 To $a_Masks[0]
$h_Dir = Run(@ComSpec & ' /U /C DIR "' & $s_Path_Search & '\' & $a_Masks[$i] & '"' & $s_Subdir & $s_Attrib, @SystemDir, @SW_HIDE, 6)
If Not $h_Dir Then Return SetError(1)
While 1
$s_Read = StdoutRead($h_Dir, False, True)
If @error Then
ExitLoop
EndIf
If $s_Read <> "" Then
$s_Out &= $s_Read
EndIf
Sleep(10)
WEnd
Next
$a_Out = StringRegExp(BinaryToString($s_Out, 2), '[^\r\n]+', 3)
If @error Then Return SetError(1)
$a_Out[0] = UBound($a_Out) - 1
Return $a_Out
EndFunc ;==>_FileSearch
Ссылки на первичные источники информации:
http://autoit-script.ru/index.php/topic,4818.0.html
http://autoit-script.ru/index.php/topic,8950.0.html
http://autoit-script.ru/index.php/topic,5028.0.html
Заранее спасибо за помощь!
P.S. системы на которых тестил: Windows 7 x64, Windows XP, Windows 7 x86
P.S.2. на Windows 7 x64 находит и заменяет только на диске С
P.S.3. на Windows XP может или найти и заменить или найти и не заменить
P.S.4. на Windows 7 x86 не находит
P.S.5. для Windows 7 x64 - компилировал 64-х битную версию, для остальных соответственно.
P.S.6. для Windows 7 x64 и Windows 7 x86 запуск скрипта с админ правами
Не могу никак понять почему в одних случаях он работает в других либо совсем не работает либо на половину.