Jump to content

Recommended Posts

Hello there,

 

So i need to clean up my directories a bit, so created a script that checks the amount of .lnk type files found and deletes each of them in a For loop.

To do this task i'm using _FileListToArray function from File.au3 udf, the problem is that the variable assigned to this command dont seem to store any subscripts, i've been trying to figure out what i done wrong but i couldn't

 

Variable $a stores local script directory

Variable $b stores an array with the list of files found

Variable $d is only for skipping the first subscript (0) that contains the amount of files found.

 

The variable $b when used in a For loop returns this error:

TNpHSFJvRjGuMYGBEHYbcQ.png

Any help is really appreciated.

 

My script is below:
 

#Include <File.au3>
$a = @ScriptDir
$b = _FileListToArray($a, ".lnk", 1, True)
$d = 1

For $c in $b
    If $d <> 1 Then
    FileDelete($c)
    Else
    $d = 0
    EndIf
Next
MsgBox(0, '', "Cleaned " & $b[0] & " links in " & $a)
Exit 0

 

Edited by DynamicRookie
Amplied a bit the reason of my problem
Link to post
Share on other sites

Just scanning your script, it looks like your file filter is bad.  It should probably be "*.lnk" not ".lnk".  If you added error checking, specifically checking the value of @error after the _FileListToArray(), my guess is that @error is not 0.  Below is an example of one way to do it.

The error is telling you that $b is not an array, most likely because the _FileListToArray() failed.

 

#Include <File.au3>
#include <Constants.au3>

example()

Func example()
    Local $iCount  = 0
    Local $sDir    = @ScriptDir
    Local $aResult = _FileListToArray($sDir, "*.lnk", $FLTA_FILES, True)
    If @error Then
        MsgBox($MB_ICONERROR, "Error", "@error = " & @error)
        Exit -1
    EndIf

    For $i = 1 To $aResult[0]
        $iCount += 1
    Next

    MsgBox($MB_ICONINFORMATION, "Result", "Count = " & $iCount)
EndFunc

 

Edited by TheXman
Link to post
Share on other sites

You could also do it this way.

Run(@Comspec & " /k del <your pathname here>\*.lnk"

 

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to post
Share on other sites
4 hours ago, BrewManNH said:

You could also do it this way.

Run(@Comspec & " /k del <your pathname here>\*.lnk"

 

Thanks, also, how could i check for all the sub-directories on a certain folder?


                  1    4
I.e. Test > 2 > test2.lnk

                  3

                  test.lnk

 

I want to get rid of a lot of links i have on a usb.

Edited by DynamicRookie
Link to post
Share on other sites
Quote

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

  names         Specifies a list of one or more files or directories.
                Wildcards may be used to delete multiple files. If a
                directory is specified, all files within the directory
                will be deleted.

  /P            Prompts for confirmation before deleting each file.
  /F            Force deleting of read-only files.
  /S            Delete specified files from all subdirectories.
  /Q            Quiet mode, do not ask if ok to delete on global wildcard
  /A            Selects files to delete based on attributes
  attributes    R  Read-only files            S  System files
                H  Hidden files               A  Files ready for archiving
                I  Not content indexed Files  L  Reparse Points
                -  Prefix meaning not

If Command Extensions are enabled DEL and ERASE change as follows:

The display semantics of the /S switch are reversed in that it shows
you only the files that are deleted, not the ones it could not find.

Microsoft offers a lot of help information about how to use commands.

Edited by BrewManNH

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Blitzkid
      Hello, i want to search several directories for files with the largest numbers behind them (Like "video123") . They dont have a datatype. But there are also files with longer names and datatypes in these folders (Like "video778.mp4"). Is it possible to filter the _FileListToArray Syntax from
      to smth. like
       
      Here is my Code
      #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <array.au3> #include <File.au3> $filedir = @ScriptDir & "\" _checkfile() Func _checkfile() ConsoleWrite("______________________" & @CRLF) Local $arr[3] = ["music", "picture", "video"] For $i = 0 To UBound($arr) - 1 Local $arrayfiles = _FileListToArray($filedir & $arr[$i], $arr[$i] & "*", 1) If @error = 1 Then ConsoleWrite($arr[$i] & "Error 1") EndIf If @error = 4 Then ConsoleWrite($arr[$i] & "Error 2") ;Exit EndIf $arrayfilter = _ArrayMax($arrayfiles, 0, 1) Global $stringfiles = StringReplace($arrayfilter, $arr[$i], "") ConsoleWrite($arrayfilter & @CRLF) Next EndFunc ;==>_checkfile  
    • By Mag91
      Hey Everybody,
      as you know im on a very low autoit-level.
      My question is: How can i read all PDFs from a Folder wich is open and copy them to a Folder on a Desktop.
       
      The Folder wich contains the PDFs is variable Z:\Projektls\"*"*"*EVERYTIME ANOTHER ENDING"*"*"*"*"
      There can be 1 PDF or even 15 PDFs.
      i tried it with _FileListToArray and _FileCopy but i Need some help to understand this language
       
      THANKS!
       
    • By galan2015
      Hello, i have question. How put data from _FileListToArray to Combo ?
      I want fill combo with names of files from folder.
    • By AutID
      This is more tricky than I thought it would be. I have been searching for some time now and can't seem to find an answer.
      To find the IE history manually I go to "C:UsersuserAppDataLocalMicrosoftWindowsHistory" and from there I select the subfolder(Today, Yesterday etc...) and check the files in it.
      So following this logic I came up with this which should normally work but it doesn't.

      #include <File.au3> #include <Array.au3> Local $File = RegRead ( "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "History" ) ;ConsoleWrite($File & @LF) Local $hSearch = _FileListToArray($File, Default, Default, True) _ArrayDisplay($hSearch) It returns some other files besides the Today, Yesterday folders.
      I assume this happens because they are not actually folders however since FileListToArray second parameter is set to default, which means all files if I understand correctly, then it should also return the paths of theToday folder.
      Anyone any ideas on this?
    • By Alexxander
      Hi 
      I'am trying to list files from folder sorted by name (same as the picture)

      i tried this code
      #include <File.au3> $arr = _FileListToArray("D:\2") _ArrayDisplay($arr) i am getting this result
       

      Any one could explain why it is putting 10-1 before 8-1 ?
      how can i make Autoit view file same as windows explorer ?
×
×
  • Create New...