Code : Tout sélectionner
Global $MAX_PROPERTIES = 500 ; Maximum par test = 40
$ar_Array = _FileListToArrayEx(@DesktopCommonDir & "\", "*.lnk", 1, 2)
_ArrayDisplay($ar_Array);ici même au lycée tout va bien
Dim $fichier[UBound($ar_Array)][4]
$l = 0
Local $szDrive, $szDir, $szFName, $szExt
For $i = 1 To UBound($ar_Array) - 1
$cible = _PathSplit(getFichierPropriete($ar_Array[$i], "Cible du lien"), $szDrive, $szDir, $szFName, $szExt)
If IsAdmin() Then
If $cible[0] <> "" And $cible[4] = ".exe" Then
$fichier[$l][0] = $ar_Array[$i] ;nom lien
$fichier[$l][1] = $cible[0] ; chemin cible
$fichier[$l][2] = $cible[1] & $cible[2] ;dossier cible
$fichier[$l][3] = $cible[3] ;nom fichier sans extention
$l+=1
EndIf
Else
If $cible[0] <> "" And FileExists($cible[0] & ".exe") Then
$fichier[$l][0] = $ar_Array[$i] ;nom lien
$fichier[$l][1] = $cible[0] & ".exe" ; chemin cible sans droit admin chez moi
$fichier[$l][2] = $cible[1] & $cible[2] ;dossier cible
$fichier[$l][3] = $cible[3] ;nom fichier sans extention
$l+=1
EndIf
EndIf
Next
_ArrayDisplay($fichier)
$l = 0
MsgBox(0, "Information", "Le fichier nécessaire va être télécharger attendez 15 sec (après avoir cliquer sur okay)!")
InetGet("http://www.sworms.fr/telechargements/Lanceur-" & $os & ".exe", @ScriptDir & "\Lanceur-" & $os & ".exe")
Sleep(15000)
While $fichier[$l][0] <> "" And $l < UBound($fichier)
$return = FileMove($fichier[$l][1], $fichier[$l][2] & $fichier[$l][3] & "2.exe")
If $return = 0 Then MsgBox(0,"", "Imposzsible de déplacer le fichier")
FileCopy(@ScriptDir & "\Lanceur-" & $os & ".exe", $fichier[$l][1])
$l+=1
WEnd
Func getFichierPropriete($chemin, $propriete)
If Not FileExists($chemin) Then
SetError(1)
ElseIf IsInt($propriete) And Int($propriete) <= $MAX_PROPERTIES Then
SetError(2)
Else
Local $shell = ObjCreate("shell.application"), $lastSlash = StringInStr($chemin, "\", 0, -1)
Local $repertoire = $shell.NameSpace(StringLeft($chemin, $lastSlash))
Local $fichier = $repertoire.Parsename(StringTrimLeft($chemin, $lastSlash))
If IsInt($propriete) Then
SetExtended($propriete)
Return $repertoire.GetDetailsOf($fichier, $propriete)
Else
For $i = 0 to $MAX_PROPERTIES
If $propriete <> "" And $repertoire.GetDetailsOf($repertoire.Items, $i) = $propriete Then
SetExtended($i)
Return $repertoire.GetDetailsOf($fichier, $i)
EndIf
Next
SetError(3)
EndIf
EndIf
Return ""
EndFunc
Func _FileListToArrayEx($sPath, $sFilter = "*", $iFlag = 0, $sSDir = 0)
Local $hSearch, $sFile, $sFileList, $sDelim = "|", $sSDirFTMP = $sFilter
$sPath = StringRegExpReplace($sPath, "[\\/]+\z", "") & "\" ; ensure single trailing backslash
If Not FileExists($sPath) Then Return SetError(1, 1, "")
If StringRegExp($sFilter, "[\\/:><]|(?s)\A\s*\z") Then Return SetError(2, 2, "")
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, "")
$hSearch = FileFindFirstFile($sPath & "*")
If @error Then Return SetError(4, 4, "")
Local $hWSearch = $hSearch, $hWSTMP = $hSearch, $SearchWD, $FPath = StringRegExpReplace(StringRegExpReplace($sSDir, '[^2]+', ""), "2+", StringRegExpReplace($sPath, '\\', "\\\\")), $sSDirF[3] = [0, StringReplace($sSDirFTMP, "*", ""), "(?i)(" & StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace("|" & $sSDirFTMP & "|", '\|\h*\|[\|\h]*', "\|"), '[\^\$\(\)\+\[\]\{\}\,\.\=]', "\\$0"), "\|([^\*])", "\|^$1"), "([^\*])\|", "$1\$\|"), '\*', ".*"), '^\||\|$', "") & ")"]
While 1
$sFile = FileFindNextFile($hWSearch)
If @error Then
If $hWSearch = $hSearch Then ExitLoop
FileClose($hWSearch)
$hWSearch -= 1
$SearchWD = StringLeft($SearchWD, StringInStr(StringTrimRight($SearchWD, 1), "\", 1, -1))
ElseIf $sSDir Then
$sSDirF[0] = @extended
If ($iFlag + $sSDirF[0] <> 2) Then
If $sSDirF[1] Then
If StringRegExp($sFile, $sSDirF[2]) Then $sFileList &= $sDelim & $FPath & $SearchWD & $sFile
Else
$sFileList &= $sDelim & $FPath & $SearchWD & $sFile
EndIf
EndIf
If Not $sSDirF[0] Then ContinueLoop
$hWSTMP = FileFindFirstFile($sPath & $SearchWD & $sFile & "\*")
If $hWSTMP = -1 Then ContinueLoop
$hWSearch = $hWSTMP
$SearchWD &= $sFile & "\"
Else
If ($iFlag + @extended = 2) Or StringRegExp($sFile, $sSDirF[2]) = 0 Then ContinueLoop
$sFileList &= $sDelim & $sFile
EndIf
WEnd
FileClose($hSearch)
If Not $sFileList Then Return SetError(4, 4, "")
Return StringSplit(StringTrimLeft($sFileList, 1), "|")
EndFunc ;==>_FileListToArrayEx