sylvanie Posted April 12, 2005 Share Posted April 12, 2005 I need often to store the output of the command dir. So to avoid to repeat the same code, I have written this function, which store the output of dir in an array. You can select the option "F" just to have files, "D" just to have directories and use a filter like *.exe ... expandcollapse popup#cs function which store the output of dir in an array syntax : _arraydir(path,type,filter) with : path: path where dir is running type :"F" to have just files, "D" to have just directories, "" all filter: "" all, "*.txt",...... if success return an array, with array[0]=nbr of elements, array[1]=first folder or file.... else return -1 #ce #include <array.au3> #region --- test of the function $tab0=_arraydir(); returns all files and directories from the current directory $tab1=_arraydir("C:\"); returns all files and directories from C:\ $tab2=_arraydir("C:\","D") ; returns all directories from C:\ $tab3=_arraydir("C:\","F") ; returns all files from C:\ $tab4=_arraydir("C:\","F","*.txt") ; returns all text files from C:\ _ArrayDisplay($tab0,@WorkingDir) _ArrayDisplay($tab1,"C:\") _ArrayDisplay($tab2,"C:\ directories") _ArrayDisplay($tab3,"C:\ files") _ArrayDisplay($tab4,"C:\ text files") #endregion Func _arrayDir($path="",$type="",$filter="*") $tmp=@tempdir&"\temdir.txt" Select Case $type="F" $type="/A:-D" Case $type="D" $type="/A:D" Case Else $type="" EndSelect runwait(@comspec&" /c dir "&$type&" /B "&$filter&" > "&$tmp,$path,@SW_HIDE) $size=FileGetSize($tmp) $file=FileOpen($tmp,0) if $file=-1 then return -1 $stock=FileRead($file,$size) fileclose($file) $stock=StringSplit($stock,@LF) _ArrayDelete ( $stock, $stock[0] ); the last elt is "", so I prefer to remove it $stock[0]=$stock[0]-1 FileDelete($tmp) Return $stock EndFunc Link to comment Share on other sites More sharing options...
zcoacoaz Posted April 12, 2005 Share Posted April 12, 2005 (edited) you should also look into stdin/out and do it that way Edited April 12, 2005 by Xenogis [font="Times"] If anyone remembers me, I am back. Maybe to stay, maybe not.----------------------------------------------------------------------------------------------------------[/font][font="Times"]Things I am proud of: Pong! in AutoIt | SearchbarMy website: F.R.I.E.S.A little website that is trying to get started: http://thepiratelounge.net/ (not mine)[/font][font="Times"] ----------------------------------------------------------------------------------------------------------[/font][font="Arial"]The newbies need to stop stealing avatars!!! It is confusing!![/font] Link to comment Share on other sites More sharing options...
sylvanie Posted April 13, 2005 Author Share Posted April 13, 2005 Hello thanks for the remark, I have looked at stdin,out and err, but I don't succeed to get the info, when it's stored in these redirections If you know how to do that, please could you explain me? Thanks PS : there is a bug in my last script : $stock=StringSplit($stock,@LF) has to be changed by : $stock=StringSplit($stock,@CRLF,1) Link to comment Share on other sites More sharing options...
zcoacoaz Posted April 15, 2005 Share Posted April 15, 2005 Opt ( "ProvideRunStdout", 1 ) $Dir = Run ( @ComSpec & " /c dir C:\" ) GUICreate ( "Dir STDOUT example", 400, 400 ) $edit = GUICtrlCreateEdit ( StdOutRead ( $Dir ), 0, 0, 400, 400 ) While 1 $ret = StdOutRead ( $Dir ) If $ret = "" Then ExitLoop GUICtrlSetData ( $edit, GuiCtrlRead ( $edit ) & @CRLF & $ret ) WEnd GUISetState ( ) Do Sleep ( 10 ) Until GUIGetMsg ( ) = -3 [font="Times"] If anyone remembers me, I am back. Maybe to stay, maybe not.----------------------------------------------------------------------------------------------------------[/font][font="Times"]Things I am proud of: Pong! in AutoIt | SearchbarMy website: F.R.I.E.S.A little website that is trying to get started: http://thepiratelounge.net/ (not mine)[/font][font="Times"] ----------------------------------------------------------------------------------------------------------[/font][font="Arial"]The newbies need to stop stealing avatars!!! It is confusing!![/font] Link to comment Share on other sites More sharing options...
sylvanie Posted April 15, 2005 Author Share Posted April 15, 2005 thank you I'll keep it preciously ! Unfortunately, it doesn't work with my version of Autoit (3.1.1) ("ProvideRunStdout" and StdOutRead aren't recognized). I presume, you are using another version. So I will waiting for the next versions to test it. Thanks again for your help Link to comment Share on other sites More sharing options...
zcoacoaz Posted April 15, 2005 Share Posted April 15, 2005 Download the newest beta from here [font="Times"] If anyone remembers me, I am back. Maybe to stay, maybe not.----------------------------------------------------------------------------------------------------------[/font][font="Times"]Things I am proud of: Pong! in AutoIt | SearchbarMy website: F.R.I.E.S.A little website that is trying to get started: http://thepiratelounge.net/ (not mine)[/font][font="Times"] ----------------------------------------------------------------------------------------------------------[/font][font="Arial"]The newbies need to stop stealing avatars!!! It is confusing!![/font] Link to comment Share on other sites More sharing options...
sylvanie Posted April 15, 2005 Author Share Posted April 15, 2005 thanks ! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now