cashiba 发表于 2016-10-16 11:25:38

学习文件和目录操作中遇到的小问题[已解决]

本帖最后由 cashiba 于 2016-10-16 19:51 编辑

学习一下文件和目录操作。如下把多个函数组合到一起练习。结果有点小问题:
1、说AU3没有新建文件和重命名文件的函数,那么想实现代码中注释部分的新建和重命名文件,要怎样写代码呢?
2、最后两行代码 FileDelete、DirRemove这两个函数为啥失灵呢?
初学,见笑了.....{:face (460):}#include <WinAPIFiles.au3>

Test()
Func Test()
    Local $FilePath = "C:\Bea\"
        If DirGetSize($FilePath) <> -1 Then
      MsgBox($MB_SYSTEMMODAL, "", "目录已经存在!")
      Return False
    EndIf

        DirCreate($FilePath)

    Local $Fex = FileExists($FilePath & "\.jre.txt")

    If $Fex Then
      MsgBox($MB_SYSTEMMODAL, "", "文件存在." & @CRLF & "FileExist 返回 " & $Fex)
                ;1,把 jre.txt 重命名为 jre.bak
                ;2,删除原 jre.txt
                ;3,创建新 jre.txt
    Else
      MsgBox($MB_SYSTEMMODAL, "", "没有文件." & @CRLF & "FileExist 返回 " & $Fex)
                FileCopy("D:\usbfiles\jre.txt",$FilePath,$FC_OVERWRITE);+ $FC_CREATEPATH)
    EndIf

    FileDelete($FilePath & "\.jre.txt")
    DirRemove($FilePath)
EndFunc

tubaba 发表于 2016-10-16 11:40:04

filecopy 重命名,fileopen 建新的,多看看幫助文件

131738 发表于 2016-10-16 12:35:46

本帖最后由 131738 于 2016-10-16 12:39 编辑

_FileCreate
创建或者清零指定的文件.


由于 AutoIt 没有 "FileRename"(文件重命名) 函数,请使用本函数(FileMove)重命名文件!

C: 盘 受 xp 之外的系统管理权限限制,

某些目录属性会导致无法操作. 因此需使用 FileSetAttrib() 事先更改目录的属性

Alam 发表于 2016-10-16 12:39:26

无法删除文件,应该是被别的程序占用了吧?
你的代码可以简洁下,自己看着也舒服吧.Test("C:\Bea")
Func Test($sFilePath)
        If DirGetSize($sFilePath) <> -1 Then Return MsgBox(16, "", "目录已经存在!")
        DirCreate($sFilePath)
        If FileExists($sFilePath & "\jre.txt") Then
                FileMove($sFilePath & "\jre.txt", $sFilePath & "\jre.bak", 1); 重命名
                FileWrite($sFilePath & "\jre.txt", "") ;新建
        EndIf
        FileCopy("D:\usbfiles\jre.txt", $FilePath, 1)
        FileDelete($FilePath & "\jre.txt")
        DirRemove($FilePath)
EndFunc

cashiba 发表于 2016-10-16 13:56:18

谢谢各位老师不明赐教!{:1_512:}

cashiba 发表于 2016-10-16 14:03:12

filecopy 重命名,fileopen 建新的,多看看幫助文件
tubaba 发表于 2016-10-16 11:40 http://www.autoitx.com/images/common/back.gif
帮助文件里常常是一句话带过,Example实例只有简单的例子,难以面面俱到,因为受其它编程语言比喻dos之类的影响,理解不透彻,一时也不习惯阿....

cashiba 发表于 2016-10-16 14:06:53

_FileCreate
创建或者清零指定的文件.
由于 AutoIt 没有 "FileRename"(文件重命名) 函数,请使用本函数 ...
131738 发表于 2016-10-16 12:35 http://www.autoitx.com/images/common/back.gif
谢谢131738老师,你不说我还真没想到有这个_filecreate UDF.系统管理权限也常常容易忽略,你提醒得很周到,感谢......

cashiba 发表于 2016-10-16 14:30:41

本帖最后由 cashiba 于 2016-10-16 14:35 编辑

无法删除文件,应该是被别的程序占用了吧?
你的代码可以简洁下,自己看着也舒服吧.
Alam 发表于 2016-10-16 12:39 http://www.autoitx.com/images/common/back.gif
现在刚开始练习目录和文件操作之类的函数,所以把几个例子综合堆砌在一起,主要是为了熟悉一下相关函数{:face (84):}
你的代码改了一下就成了:
#include <WinAPIFiles.au3>
Test("C:\Bea")
Func Test($FilePath)
If DirGetSize($FilePath) <> -1 Then
   MsgBox(16, "", "目录已经存在!")
   If FileExists($FilePath & "\jre.txt") Then
      FileMove($FilePath & "\jre.txt", $FilePath & "\jre.bak", 1); 重命名
      FileWrite($FilePath & "\jre.txt", "") ;新建
   EndIf
else
   DirCreate($FilePath)
   FileCopy("D:\usbfiles\jre.txt", $FilePath, 1)
endif
EndFunc
FileDelete("C:\Bea\jre.txt")
FileDelete("C:\Bea\*.*")
DirRemove("C:\Bea");不能删除目录的原因:因为文件夹里还有其它文件,所以无法删除果然是有了实例事半功倍....非常感谢!
页: [1]
查看完整版本: 学习文件和目录操作中遇到的小问题[已解决]