Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] GetCurrentDirectory

Ответить
Настройки темы
[решено] GetCurrentDirectory

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Наверное нету в AutoIt3 такой фитчи? Мне надо чтоб:
Код: Выделить весь код
FileSetAttrib(@ScriptDir,"-RASHNOT",1)
FileSetAttrib(@ScriptDir,"-RASHNOT",1)
FileSetAttrib(@ScriptDir,"-RASHNOT",1)
FileSetTime(@ScriptDir,"20010101000000",0,1)
FileSetTime(@ScriptDir,"20010101000000",1,1)
FileSetTime(@ScriptDir,"20010101000000",2,1)
Exit
выполнялся в текущей директории... а не там где скрипт расположен... хотя может если убрать @ScriptDir... щас посмотрю... ??
кстати, неудобство в том что в FileSetTime("", "", 0+1+2=3, 1) не поддерживается и даже странно!

-------
Полезное сообщение


Отправлено: 20:49, 19-03-2009

 

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Цитата semiono:
выполнялся в текущей директории... а не там где скрипт расположен... хотя может если убрать @ScriptDir. »
не убрать, а заменить на нужный адрес папки, пример:
Код: Выделить весь код
FileSetAttrib("c:\dir1","-RASHNOT",1)
или Вы про макрос @WorkingDir?
тогда так:
Код: Выделить весь код
FileSetAttrib(@WorkingDir,"-RASHNOT",1)
верно, FileSetTime("", "", 0+1+2, 1) - не проканает.

думаю нет смысла 3 раза:
Код: Выделить весь код
FileSetAttrib(@ScriptDir,"-RASHNOT",1)
FileSetAttrib(@ScriptDir,"-RASHNOT",1)
FileSetAttrib(@ScriptDir,"-RASHNOT",1)
если они полностью одинаковые - хватит один раз.

если ооооооочень много файлов, того возможно сделать ручной поиск каждого файла,
и при нахождении очередного сразу выставлять ему время открытия, создания, last доступа.

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 21:54, 19-03-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#include <Array.au3>

;Папка аутоита
$AutoItPath = StringRegExpReplace(@AutoItExe, '\\[^\\]+$', '')

$DirsArray = DirListToArray($AutoItPath, 1)
_ArrayDisplay($DirsArray)

Func DirListToArray($sPath, $iWithFolder=0, $sRootPath=1)
    $sPath = StringRegExpReplace($sPath, '\\+$', '')
    Local $aRetArray[1], $aSubDirsArr, $sFindNextFile, $sCurrentPath

    Local $sFindFirstFile = FileFindFirstFile($sPath & "\*.*")
    If @error = 1 Then Return SetError(1, 0, -1)

    If $iWithFolder == 1 AND $sRootPath == 1 Then
        $aRetArray[0] += 1
        ReDim $aRetArray[$aRetArray[0]+1]
        $aRetArray[$aRetArray[0]] = $sPath
;~      _Set_Attrib_And_Time($sPath)
    EndIf

    If $sRootPath = 1 Then
        ReDim $aRetArray[2]
        $aRetArray[1] = $sPath
    EndIf

    While 1
        $sFindNextFile = FileFindNextFile($sFindFirstFile)
        If @error = 1 Then ExitLoop

        $sCurrentPath = $sPath & "\" & $sFindNextFile

        If StringInStr(FileGetAttrib($sCurrentPath), "D") Then
            If $iWithFolder == 1 Then
                $aRetArray[0] += 1
                ReDim $aRetArray[$aRetArray[0]+1]
                $aRetArray[$aRetArray[0]] = $sCurrentPath
;~              _Set_Attrib_And_Time($sCurrentPath)
            EndIf

            $aSubDirsArr = DirListToArray($sCurrentPath, $iWithFolder, 0)

            If IsArray($aSubDirsArr) Then
                For $i = 1 To $aSubDirsArr[0]
                    $aRetArray[0] += 1
                    ReDim $aRetArray[$aRetArray[0]+1]
                    $aRetArray[$aRetArray[0]] = $aSubDirsArr[$i]
                Next
            EndIf
        Else
            $aRetArray[0] += 1
            ReDim $aRetArray[$aRetArray[0]+1]
            $aRetArray[$aRetArray[0]] = $sCurrentPath
;~          _Set_Attrib_And_Time($sCurrentPath)
        EndIf
    WEnd

    FileClose($sFindFirstFile)

    Return $aRetArray
EndFunc

Func _Set_Attrib_And_Time($sPath)
    FileSetAttrib($sPath,"-RASHNOT",1)
    FileSetTime($sPath,"20010101000000",0,1)
    FileSetTime($sPath,"20010101000000",1,1)
    FileSetTime($sPath,"20010101000000",2,1)
EndFunc
закомментированные строчки вызов функции для установки атрибутов и времени.
применять на папку AutoIt (которая обрабатывается в этом примере) не рекомендуется.

оригинал функции.

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:24, 19-03-2009 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] GetCurrentDirectory

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено




 
Переход