текстовый файл с именами всех файлов в папке
-
socap
текстовый файл с именами всех файлов в папке
Помогите пожалуйста составить код, который перечисляет в текстовом файле все файлы указанных папок.
То есть папок например может быть указано и три и семь.
То есть папок например может быть указано и три и семь.
-
apozlevich
Re: текстовый файл с именами всех файлов в папке
Цитата socap:
все файлы указанных папок
Указанных где? Все файлы с учетом подпапок или только самих папок? В текстовый файл писать только имена файлов или полные пути?
все файлы указанных папок
текстовый файл с именами всех файлов в папке
Указанных где? Все файлы с учетом подпапок или только самих папок? В текстовый файл писать только имена файлов или полные пути?
-
socap
Re: текстовый файл с именами всех файлов в папке
madmasles, указанных в самом скрипте.
Если можно, то пример с учетом подпапок и без учета.
То есть я например указываю $Dir1 с учетом, $Dir2 без учета.
Круто было бы если полный путь!
Если можно, то пример с учетом подпапок и без учета.
То есть я например указываю $Dir1 с учетом, $Dir2 без учета.
Круто было бы если полный путь!
-
madmasles
Re: текстовый файл с именами всех файлов в папке
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.htm/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-
madmasles
Re: текстовый файл с именами всех файлов в папке
Цитата socap:
Помогите пожалуйста составить код, который перечисляет в текстовом файле все файлы указанных папок.
То есть папок например может быть указано и три и семь.
Фигассе вы заморочились. Есть же команда dir, которая с аргументом /B выводит только имена. Кстати, madmasles именно ее в итоге и использует в коде.
Помогите пожалуйста составить код, который перечисляет в текстовом файле все файлы указанных папок.
То есть папок например может быть указано и три и семь.
текстовый файл с именами всех файлов в папке
Фигассе вы заморочились. Есть же команда dir, которая с аргументом /B выводит только имена. Кстати, madmasles именно ее в итоге и использует в коде.
-
apozlevich
Re: текстовый файл с именами всех файлов в папке
Спасибо! А как сделать так чтобы можно было ввести в скрипт например имя нескольких папок и все они были в этом текстовом файле?
-
socap
Re: текстовый файл с именами всех файлов в папке
Спасибо! А как сделать так чтобы можно было ввести в скрипт например имя нескольких папок и все они были в этом текстовом файле?
-
socap
Re: текстовый файл с именами всех файлов в папке
Вот так еще можно
Код:
Udf брать
Код:
Код: Выделить всё
#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
EndFuncUdf брать
здесь
и положить в Autoit3\Include-
AZJIO
Re: текстовый файл с именами всех файлов в папке
socap, до кучи
Код:
Только надо скачать
читать дальше »
Код:
Код: Выделить всё
#Include
$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"-
apozlevich