Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
текстовый файл с именами всех файлов в папке

Новый участник


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

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


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

То есть папок например может быть указано и три и семь.

Отправлено: 10:11, 03-02-2012

 

Аватара для madmasles

Ветеран


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

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


Цитата socap:
все файлы указанных папок »
Указанных где? Все файлы с учетом подпапок или только самих папок? В текстовый файл писать только имена файлов или полные пути?
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:20, 03-02-2012 | #2



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

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


Новый участник


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

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


madmasles, указанных в самом скрипте.

Если можно, то пример с учетом подпапок и без учета.
То есть я например указываю $Dir1 с учетом, $Dir2 без учета.

Круто было бы если полный путь!

Отправлено: 11:48, 03-02-2012 | #3


Аватара для madmasles

Ветеран


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

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


socap,
Код: Выделить весь код
$Dir = @ScriptDir & '\AutoIt'

$aFilesAll = _FileSearch($Dir, '*', 1);с учетом подпапок
If @error Then
    MsgBox(16, 'Error', '_FileSearch')
    Exit
EndIf
$sText = 'С учетом подпапок' & @CRLF & 'Папка: ' & $Dir & @CRLF & 'Всего файлов: ' & $aFilesAll[0] & _
        @CRLF & 'На ' & @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN & @CRLF
For $i = 1 To $aFilesAll[0]
    $sText &= $i & '. ' & $aFilesAll[$i] & @CRLF
Next
$hFile = FileOpen(@ScriptDir & '\FilesAll.txt', 2)
FileWrite($hFile, StringTrimRight($sText, 2))
FileClose($hFile)
$aFiles = _FileSearch($Dir, '*', 1, 0);без учета подпапок
If @error Then
    MsgBox(16, 'Error', '_FileSearch')
    Exit
EndIf
$sText = 'Без учета подпапок' & @CRLF & 'Папка: ' & $Dir & @CRLF & 'Всего файлов: ' & $aFiles[0] & _
        @CRLF & 'На ' & @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN & @CRLF
For $i = 1 To $aFiles[0]
    $sText &= $i & '. ' & $Dir & '\' & $aFiles[$i] & @CRLF
Next
$hFile = FileOpen(@ScriptDir & '\Files.txt', 2)
FileWrite($hFile, StringTrimRight($sText, 2))
FileClose($hFile)


Func _FileSearch($sPath, $sFileMask = "*", $iFlag = 0, $iSubDir = 1, $iSort = 0)
    ;CreatoR; http://autoit-script.ru/index.php/topic,8266.msg55775
    Local $sOutBin, $sOut, $aOut, $aMasks, $sRead, $hDir, $sAttrib, $sFiles

    If Not StringInStr(FileGetAttrib($sPath), "D") Then
        Return SetError(1, 0, 0)
    EndIf
    If $iSubDir = 1 Then
        $sAttrib &= ' /S'
    EndIf
    If $iSort = 1 Then
        $sAttrib &= ' /O:N'
    EndIf
    Switch $iFlag
        Case 1
            $sAttrib &= ' /A-D'
        Case 2
            $sAttrib &= ' /AD'
        Case Else
            $sAttrib &= ' /A'
    EndSwitch
    $sOut = StringToBinary('0' & @CRLF, 2)
    $sPath = StringRegExpReplace($sPath, '\\+$', '')
    $sFileMask = StringRegExpReplace($sFileMask, '^;+|;+$', '')
    $sFileMask = StringRegExpReplace($sFileMask, ';{2,}', ';')
    $aMasks = StringSplit($sFileMask, ';')
    For $i = 1 To $aMasks[0]
        If StringStripWS($aMasks[$i], 8) = "" Then
            ContinueLoop
        EndIf
        $sFiles &= '"' & $sPath & '\' & $aMasks[$i] & '"'
        If $i < $aMasks[0] Then
            $sFiles &= ';'
        EndIf
    Next
    $hDir = Run(@ComSpec & ' /U /C DIR ' & $sFiles & ' /B' & $sAttrib, @SystemDir, @SW_HIDE, 6)
    While 1
        $sRead = StdoutRead($hDir, False, True)
        If @error Then
            ExitLoop
        EndIf
        If $sRead <> "" Then
            $sOut &= $sRead
        EndIf
        Sleep(10)
    WEnd
    $aOut = StringRegExp(BinaryToString($sOut, 2), '[^\r\n]+', 3)
    If @error Or UBound($aOut) < 2 Then
        Return SetError(2, 0, 0)
    EndIf
    $aOut[0] = UBound($aOut) - 1
    Return $aOut
EndFunc   ;==>_FileSearch
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:57, 03-02-2012 | #4


Аватара для apozlevich

Ветеран


Автор проектов


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

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


Цитата socap:
Помогите пожалуйста составить код, который перечисляет в текстовом файле все файлы указанных папок.
То есть папок например может быть указано и три и семь. »
Фигассе вы заморочились. Есть же команда dir, которая с аргументом /B выводит только имена. Кстати, madmasles именно ее в итоге и использует в коде.

-------
echo 127.0.0.1 google.ru >> %systemroot%\system32\drivers\etc\hosts && ipconfig /flushdns && echo Я ничего не трогал, оно само!

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

Отправлено: 21:08, 03-02-2012 | #5


Новый участник


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

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


Спасибо! А как сделать так чтобы можно было ввести в скрипт например имя нескольких папок и все они были в этом текстовом файле?

Отправлено: 03:24, 04-02-2012 | #6


Новый участник


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

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


Вот так еще можно
Код: Выделить весь код
#include <File.au3>
#include <RecFileListToArray.au3>
Global $Dir[20]

$Dir[0] = "c:\Program Files\AutoIt3"
$Dir[1] = "c:\Windows"
$Dir[2] = "c:\Temp"

For $i = 0 To UBound($Dir) - 1
    If $Dir[$i] = "" Then ContinueLoop
    _Search($Dir[$i], 0)
    _Search($Dir[$i], 1)
Next

Func _Search($Dir, $iRecursion)
    $aFiles = _RecFileListToArray($Dir, "*.*", 1, $iRecursion, 0, 2, "", "")
    If Not IsArray($aFiles) Then
        MsgBox(16, "Error", "Invalid input path"& @CRLF & $Dir)
        Return
    Else
        If $iRecursion = 0 Then
            $hFile = FileOpen(@ScriptDir & "\NoRecursion.txt",1)
        Else
            $hFile = FileOpen(@ScriptDir & "\Recursion.txt",1)
        EndIf
        _FileWriteFromArray($hFile, $aFiles, 1)
        FileClose($hFile)
    EndIf
EndFunc
Udf брать здесь и положить в Autoit3\Include

Последний раз редактировалось Dm666, 04-02-2012 в 19:48. Причина: А где здесь тег [autoit]?...

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

Отправлено: 04:07, 04-02-2012 | #7


Аватара для AZJIO

Старожил


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

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


socap, до кучи
читать дальше »
Код: Выделить весь код
#Include <FileOperations.au3>
$FileList=_FO_FileSearch(@WindowsDir, '*', True, 125, 1, 0)&@CRLF
$FileList &=_FO_FileSearch(@UserProfileDir, '*', True, 125, 1, 0)&@CRLF
$FileList &=_FO_FileSearch(@ProgramFilesDir&'\Internet Explorer', '*', True, 125, 1, 0)
$file = FileOpen(@ScriptDir&'\file.txt',2)
FileWrite($file, $FileList)
FileClose($file)


Только надо скачать это и положить файл FileOperations.au3 в папку "C:\Program Files\AutoIt3\Include"
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:14, 16-02-2012 | #8


Аватара для apozlevich

Ветеран


Автор проектов


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

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


Так чем вам не нравится использование dir /B?

-------
echo 127.0.0.1 google.ru >> %systemroot%\system32\drivers\etc\hosts && ipconfig /flushdns && echo Я ничего не трогал, оно само!

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

Отправлено: 12:15, 16-02-2012 | #9


Аватара для ferget

Разный


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

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


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

Отправлено: 12:34, 16-02-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Объединение всех файлов в папке AlexVong Скриптовые языки администрирования Windows 5 24-06-2015 23:34
Прочие - Как вывести список папок и файлов в текстовый файл? Vowan Программное обеспечение Windows 15 23-11-2013 15:29
CMD/BAT - [решено] как через батник получить список всех служб и их состояние в текстовый файл? Pozia Скриптовые языки администрирования Windows 3 22-11-2011 00:11
CMD/BAT - [решено] Как имена файлов расположенных в одной папке записать в текстовый файл? Nun-Nun Скриптовые языки администрирования Windows 6 12-05-2009 21:44
[решено] Импорт всех reg-файлов в папке? s127d Автоматическая установка Windows 2000/XP/2003 2 24-05-2008 05:11




 
Переход