如何使用autoit删除文件

时间:2016-06-07 07:24:13

标签: directory autoit removeall

我在autoit中编写了一个小的2行脚本,如下所示

#RequireAdmin
FileDelete ( "C:\Users\Administrator\Desktop\temp\" )

我想要删除目录下的文件,但即使我尝试使用此代码也无法正常工作 -

#RequireAdmin
DirRemove ( "C:\Users\Administrator\Desktop\temp\" )

但它没有任何建议吗?

1 个答案:

答案 0 :(得分:2)

FileDelete的语法是

FileDelete ( "filename" ) ; not only directory!

您还可以使用通配符作为文件名(*和?)。 Diskussion of wildcards: see Remarks here.

DirRemove的工作原理如下:

DirRemove ( "path" [, recurse = 0] ) 

使用recurse = 0(默认值)时,只有在文件夹为空时才删除该文件夹! 使用recurse = 1删除文件和子目录(如DOS DelTree命令)。

编辑: 可能是,你误解了使用旗帜的那种。这就是为什么更详细:

; Remove only the empty folder "Folder_path"
DirRemove('Folder_Path')

; Remove folder "Folder_Path" with all subfolder and all files within
DirRemove('Folder_Path', 1)

如果这应该起作用,那就是系统权利问题。

EDIT_2:如果你想删除没有根文件夹本身,你可以这样做:

#include <Files.au3>

; get all the files in root folder and delete them
Local $aFilesInRoot = _FileListToArray('Your_Path', 1, True) ;  1=$FLTA_FILES = Return files only,  True=returns full path
For $i = 1 To $aFilesInRoot[0]
    FileDelete($aFilesInRoot[1])
Next

; now get all the subfolder under root and delete these all recursive
Local $aFolderInRoot = _FileListToArray('Your_Path', 2, True); 2=$FLTA_FOLDERS = Return Folders only
For $i = 1 To $aFolderInRoot[0]
    DirRemove($aFolderInRoot[1], 1)
Next

但是,只用一个命令删除所有删除后的根文件夹是不是更容易?