朱雅琼 发表于 2010-1-13 00:07:04

如何表示当前程序所在目录

本帖最后由 朱雅琼 于 2010-1-13 09:56 编辑

RT:

@AutoItExe返回 的目录里含有 \aaa.exe

比如我想删除当前目录下所有文件该怎么写?

afan 发表于 2010-1-13 00:09:46

@ScriptDir

朱雅琼 发表于 2010-1-13 00:26:12

非常感谢,自己没找到..哎...帮助文档还是要多看

朱雅琼 发表于 2010-1-13 00:32:59

还有问下,怎么判断输入的是目录还是文件

如c:\aaa 这样的输入

afan 发表于 2010-1-13 00:35:35

$a = FileGetAttrib('c:\aaa')
If StringInStr($a, 'D') Then Msgbox(0, 0, '文件夹是也')

朱雅琼 发表于 2010-1-13 00:47:58

能不能帮忙写一个遍历文件夹...

如遍历文件夹,输出当前文件和子文件下的*.txt

自己想关天写不出来

afan 发表于 2010-1-13 00:51:09

$type = ".txt"
_filelist(@ScriptDir)
Func _filelist($searchdir)
      $search = FileFindFirstFile($searchdir & "\*.*")
      If $search = -1 Then Return -1
      While 1
                $file = FileFindNextFile($search)
                If @error Then
                        FileClose($search)
                        Return
                ElseIf $file = "." Or $file = ".." Then
                        ContinueLoop
                ElseIf StringInStr(FileGetAttrib($searchdir & "\" & $file), "D") Then
                        _filelist($searchdir & "\" & $file)
                EndIf
                If StringRight($file, 4) = $type Then
                        MsgBox(0, 0, $searchdir & "\" & $file)
                EndIf
      WEnd
EndFunc   ;==>_filelist

朱雅琼 发表于 2010-1-13 00:58:16

非常感谢...感触颇深啊...这么晚了还帮我解决问题,再次感谢

afan 发表于 2010-1-13 00:58:59

回复 8# 朱雅琼


    1点整,还早着呢~ :)

朱雅琼 发表于 2010-1-13 01:18:08

本帖最后由 朱雅琼 于 2010-1-13 01:19 编辑

早的话再帮我改下这个吧
我想批量把目录和子目录*.txt 改成*.bak这样的While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $ok
                        $txt=GUICtrlRead($Input1)
                        $bak=GUICtrlRead($Input2)
                        $path=@ScriptDir
                        _filelist($path,$txt,$bak)
        EndSwitch
WEnd


Func _filelist($searchdir,$ren,$rened)

      $search = FileFindFirstFile($searchdir & "\*.*")

      If $search = -1 Then Return -1

      While 1

                $file = FileFindNextFile($search)

                If @error Then

                        FileClose($search)

                        Return

                ElseIf $file = "." Or $file = ".." Then

                        ContinueLoop

                ElseIf StringInStr(FileGetAttrib($searchdir & "\" & $file), "D") Then

                        _filelist($searchdir & "\" & $file,$ren,$rend)

                EndIf
                        _RunDOS('ren ' & $path &'\*.' & $ren &' ' & '*.' & $rened)

      WEnd

EndFunc   这样会显示声明啊

afan 发表于 2010-1-13 01:20:04

回复 10# 朱雅琼


    你总得自己动动手,再帮你就是害你了~- -||

朱雅琼 发表于 2010-1-13 01:26:11

其实你给我说下思路就可以了

今天不知道怎么的有点急了..

刚才那个用global解决了

gapkiller 发表于 2010-1-13 10:05:31

能不能帮忙写一个遍历文件夹...

如遍历文件夹,输出当前文件和子文件下的*.txt

自己想关天写不出来
朱雅琼 发表于 2010-1-13 00:47 http://www.autoitx.com/images/common/back.gif


    dir /s *.txt

gapkiller 发表于 2010-1-13 10:43:51

本帖最后由 gapkiller 于 2010-1-13 10:50 编辑

早的话再帮我改下这个吧
我想批量把目录和子目录*.txt 改成*.bak这样的这样会显示声明啊
朱雅琼 发表于 2010-1-13 01:18 http://www.autoitx.com/images/common/back.gif


    for /f %a in ('dir /b/s *.txt') do ren %a %~na.bak
搞定

如果非要用Autoit
#include <Process.au3>
_RunDOS("for /f %a in ('dir /b/s *.txt') do ren %a %~na.bak")

朱雅琼 发表于 2010-1-13 17:03:22

程序已经写完了..呵呵

bat的for很鸡肋..不好用...
页: [1] 2
查看完整版本: 如何表示当前程序所在目录