Jump to content

Variable must be an "object" type


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 comment
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 comment
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 comment
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 comment
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 comment
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
 Share

×
×
  • Create New...