J'ai tester le script, il ne fonctionne pas !
Notepad ouvre un fichier qui n'existe pas, ensuite le fichier bat ne s'efface pas.
Problème dans le paramètre de notepad, chez moi, je dispose de notepad2, installé dans c:\windows , il suffit de l'appeler sans start.
Pour le bat qui ne s'efface pas, tu prenais la $variable d'ouverture du fichier et non son nom.
Faut aussi faire attention au variable utilisé, tu utilise $bat comme variable et idem dans ta la fonction.=>
batwrapper($bat)
On pourrait aussi écrire
batwrapper("Echo off ....)
j'ai remarqué que la macro tempdir prenais bcp de ressource comparait a sa jumelle sous dos %TEMP%, c'est du a quoi ? en utilisant les macro dos sa me semble plus rapide et chez vous ?
voici une mini correction
rappel parametre dir
/B Utilise le format abrégé (noms des fichiers).
/S Affiche les fichiers d'un répertoire et de ses sous-répertoires.
Code : Tout sélectionner
#include <Constants.au3>
$Quote = chr(34)
$SpaceQuote = chr(32) & $Quote
$QuoteSpace = $Quote & chr(32)
$QuoteSpaceQuote = $QuoteSpace & $Quote
;Paramètre de la cmd dir et de sa sortie
$Dir_CMD = "DIR"
$Dir_Options="/B /S" ; pour choisir les détails du dir
$Sortie = "%TEMP%.\%~n0.txt" ; %~n0= nom du fichier bat ..@tempdir & "tmp.txt"
;Dossier, fichier extension (tout)
$Dir1="%TEMP%"
;le dossier suivant vous montre une autre méthode
$Dir2='c:\autoit3wrapper*.exe" "c:\aut2exe.exe'
;Le fichier bat
$bat="@echo off" & @CRLF
$bat&= $Dir_CMD & $SpaceQuote & $dir1 & $QuoteSpaceQuote & $Dir2 & $QuoteSpace & $Dir_Options & " >" & $Sortie & @CRLF
$bat&= "notepad" & $SpaceQuote & $Sortie& $Quote & @CRLF
$bat&= "del" & $SpaceQuote & $Sortie & $Quote & @CRLF
$bat&= "exit" & @CRLF
batwrap($bat)
Exit
Func batwrap($sBaT)
Consolewrite($sBaT) ; variable $bat
Local $File = @tempdir & "\tmp.bat" ;"%TEMP%.\tmp.bat"
Local $Result=""
$OpenFile = FileOpen($File, 2)
FileWrite($OpenFile, $sBaT)
FileClose($OpenFile)
Local $Pid = Run("cmd /c" & $File,"",0,6)
While 1
$Result = StdoutRead($Pid)
If @error Then ExitLoop
MsgBox(0, "STDOUT read:", $Result)
Wend
FileDelete($File) ; on efface le fichier bat
return $Result
EndFunc
Dans ton exemple tu crée un fichier bat, mais il n'est pas obligatoire, vu qu'on utilise la console ?