Justmobile Posted July 19, 2004 Posted July 19, 2004 Hi All, See code: ; Read Folders from current scriptdir in variabel $Folder $teller = 0 $Foldername = @ScriptDir & "\*.*" $search = FileFindFirstFile(""& $Foldername & "") While 1 $Filenames = FileFindNextFile($search) If @error Then ExitLoop If $Filenames <> "XpIndexScriptAutoIt" Then If StringInStr($filenames ,".") = 0 Then $teller = $teller + 1 $Folder[ $teller ] = $Filenames EndIf EndIf Wend This is a little script from my main source, Does anyone knows how i can sort it ?, ($Folder [ $teller])= > contents? cheers Justmobile
trids Posted July 20, 2004 Posted July 20, 2004 (edited) $asItem = _GetList("C:\*.*") for $nX = 1 to $asItem[0] MsgBox(0,$nx, $asItem[$nX]) next Func _GetList($psFolder) ;Sort a list of filenames or directories $sCmd = "dir " & $psFolder & " /b /on" ;filenames and folders $sCmd = "dir " & $psFolder & " /b /on /a-d";folders, not filenames $sCmd = "dir " & $psFolder & " /b /on /ad";filenames, not folders $sFileList = "C:\~listfile.tmp" RunWait(@Comspec & " /c " & $sCmd & ">" & $sFileList,"",@SW_HIDE) $sList = FileRead($sFileList,FileGetSize($sFileList)) $sList = StringTrimRight(StringReplace($sList,@CRLF, @LF),1) $asList = StringSplit($sList,@LF) ;cleanup FileDelete($sFileList) Return $asList EndFunc.. hope this helps Edit: included call to func, since this is the Scripts and Scraps forum Edited July 20, 2004 by trids
Justmobile Posted July 20, 2004 Author Posted July 20, 2004 Great! Many thanks will help a lot. Justmobile
sshrum Posted August 29, 2006 Posted August 29, 2006 Here's what I came up with on my own (doesn't require file parsing) #include <Array.au3> #include <Constants.au3> Global $iLine = 0 Global $sLine = "" Global $aLine = "" Dim $aFiles[30000] $aRaw = Run(@ComSpec & " /c dir n:\music\*.mp3 /b /o /s", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) While 1 $SLine = StdoutRead($aRaw) If @error Then ExitLoop $aLine = StringSplit($SLine, @CRLF) If $aLine[0] > 1 Then For $i = 1 To $aLine[0] If $aLine[$i] = "" Then Continueloop $iLine = $iLine + 1 $aFiles[$iLine] = $aLine[$i] Next Else $iLine = $iLine + 1 $aFiles[$iLine] = $sLine EndIf Wend Thought it was odd that the first STDOUT line was just 1 line and most ofthe rest were ~255 lines long (hence the need for the 'If $aLine[0] > 1' line) Granted, I need to make this more generic and function-ize it but it works super fast! Plus I can make use of all the DIR arguments. All I have to do now is go back and update all my utils that use FileSearch to use this instead! Sean Shrum :: http://www.shrum.net All my published AU3-based apps and utilities 'Make it idiot-proof, and someone will make a better idiot'
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