Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Создание списка файлов выборочно по расширениям
Goto page Previous  1, 2, 3, 4, 5
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
shveicar



Joined: 18 Apr 2011
Posts: 277
Location: Россия Москва

Post (Separately) Posted: Sat Jul 30, 2011 15:53    Post subject: Reply with quote

Flasher wrote:
Хм. Окно должно исчезать автоматически. Галка на "в свёрнутом виде" стоит?
Пардон, просто батник работает в 10 раз медленнее, чем скрипт. Поэтому окно в трее, на долго зависло. За ссылку на скрипт, Спасибо.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Jul 30, 2011 17:35    Post subject: Reply with quote

shveicar wrote:
просто батник работает в 10 раз медленнее
Просто скрипт в процессе никак о своей работе знать не даёт в отличии от батника, поэтому так кажется. Можно окно консоли вообще скрыть, и разница не будет столь ощутима.
Back to top
View user's profile Send private message
onfirmaton



Joined: 31 Jan 2011
Posts: 7

Post (Separately) Posted: Fri Sep 09, 2011 13:41    Post subject: Reply with quote

Скрипт от "Tol!k" (Пт Янв 28, 2011 14:04) работает,

но хотелось бы добавить к списку "тяжелых" (>300-500mb) файлов CRC сумму,
для возможности последующей проверки "битости" файлов,

а также такие мелочи, как размер в байтах, время, т.д.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Fri Sep 09, 2011 22:03    Post subject: Reply with quote

onfirmaton
Здесь замени кусок
Code:
:hashs
>>%1 rhash.exe -p %%p;%%s;%%C;%%{mtime};\n %2
goto :eof
:header
>%1 echo File;Size;CRC32;Last modification;
goto :eof
Back to top
View user's profile Send private message
onfirmaton



Joined: 31 Jan 2011
Posts: 7

Post (Separately) Posted: Mon Sep 12, 2011 17:20    Post subject: Tol!k Reply with quote

СПС !!!
пошел пробовать,

а где б чаво-нибудь по этому языку скриптов полистать ?

чтоб по пустякам не морочить другим голову,

вроде немного смахивает на VBasic , но и чем-то отличается...
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Mon Sep 12, 2011 18:29    Post subject: Reply with quote

Вот и выросло поколение...
Начать можно отсюда: http://habrahabr.ru/blogs/windows/60604/, а дальше - Гугл в помощь... Ну, и команду help в консоли никто не отменял.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Sep 12, 2011 19:24    Post subject: Reply with quote

1. А синтаксис в скриптах используется исключительно дельфийский?
2. вроде немного смахивает на VBasic
3. ... Question

Продолжение следует... Very Happy
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1172
Location: Макеевка

Post (Separately) Posted: Thu Aug 09, 2012 18:10    Post subject: Reply with quote

Каким образом модифицировать эту команду, чтобы получался список файлов в юникоде?
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Fri Aug 10, 2012 00:30    Post subject: Reply with quote

Code:
TOTALCMD#BAR#DATA
%comspec% /c for /f "delims=" %$ in ('type
%WL') do %%comspec%% /u /c "(dir/b/s/on/a-d "%%$"&echo:)>>"%Tlist.lst""
%commander_path%\totalcmd.exe,24
всё выделенное >> список с полными путями в UTF-16

1
-1

Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1172
Location: Макеевка

Post (Separately) Posted: Fri Aug 10, 2012 01:46    Post subject: Reply with quote

Tol!k
Спасибо.
Заметил, что обрабатываются не только выделенные файлы, но и вообще все файлы в подкаталогах того каталога, где лежат выделенные файлы, и если находятся совпадающие имена, то они тоже добавляются в список. Это ограничение можно обойти?
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sat Aug 11, 2012 15:04    Post subject: Reply with quote

Quote:
если находятся совпадающие имена, то они тоже добавляются в список.

исправление для http://wincmd.ru/forum/viewpost.php?p=73323
Code:
@echo off &setlocal enableextensions &chcp 1251 >nul

rem   Пример параметров: "%L" "%Tlist.lst"
rem                    : "%L"

if "%~2"=="" (set list=list.lst) else set "list=%~2"
cd. >"%list%"
if "%~1"=="" (dir /b/s/on/a-d >>"%list%" &goto :p)
findstr /vec:"\\" "%~1" >>"%list%"
for /f "delims=" %%d in ('findstr /ec:"\\" "%~1"') do dir /b/s/on/a-d "%%d" >>"%list%"
:p
set "p$="
cd. >"%list%.tmp"
for /f "usebackq delims=" %%f in ("%list%") do call :s "%%f"
move /y "%list%.tmp" "%list%"
goto :eof

:s
if not "%p$%"=="%~dp1" echo:>>"%list%.tmp"
set "f$=%~1"
>>"%list%.tmp" echo %f$:&=^&%
set "p$=%~dp1"
goto :eof

юникод не обещаю
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1172
Location: Макеевка

Post (Separately) Posted: Sun Aug 26, 2012 21:48    Post subject: Reply with quote

Tol!k
Спасибо.

Немного модифицировал скрипт, сделал его более универсальным и многовариантым.
Запостю и здесь, может кому ещё пригодится.

Code:
'================================================================
' Create Filelist
' Створення списку файлів
' Создание списка файлов
'================================================================
' Parameters / Параметры / Параметри:
' 1: {files or directory}/{файли або каталог}/{файлы или каталог}
' 2: {filelist}/{підсумковий файл-список}/{итоговый файл-список}
' 3: {recursive path | 1 or 0}
'    {рекурсивний список (включаючи підкаталоги) | 1 або 0}
'    {рекурсивный список (включая подкаталоги) | 1 или 0}
' 4: {relative path | 1 or 0}
'    {відносні шляхи | 1 або 0}
'    {относительные пути | 1 или 0}
' 5: {new filelist each time | 1 or 0}
'    {новий список кожного разу | 1 або 0}
'    {новый список каждый раз | 1 или 0}
'================================================================
' Якщо перший параметр - шлях до каталогу, то обробляється
'   тільки цей каталог, при цьому він вважається активним.
' Если первый параметр - путь к каталогу, то обрабатывается
'    только этот каталог, причём он считается активным.
'================================================================
' Якщо для параметра {файл-список} не вказано повний шлях,
'   то файл-список створюється в активному каталозі.
' Если для параметра {файл-список} не указан полный путь,
'   то файл-список создаётся в активном каталоге.
'================================================================
' При рекурсивній обробці (третій параметр = 1) обробляються
'   також всі файли і підкаталоги виділених каталогів.
' При рекурсивной обработке (третий параметр = 1) обрабатываются
'   также все файлы и подкаталоги выделенных каталогов.
'================================================================
' При релятивній обробці (четвертий параметр = 1) шляхи до файлів
'   в списку файлів вказуються відносно активного каталогу.
' При рекурсивной обработке (четвёртый параметр = 1) пути к файлам
'   в списке файлов указываются относительно активного каталога.
'================================================================
' Якщо п'ятий параметр дорівнює 0, то підсумковий файл-список
'   буде перезаписуватись; якщо 1 - створюватися новий
' Если пятый параметр равен 0, то итоговый файл-список
'   будет перезаписываться; если 1 - создаваться новый
'================================================================
' У функції CreateTextFile третій параметр відповідає за кодування
'   створюємого файлу: True - Unicode, False - ASCII.
' В функции CreateTextFile третий параметр отвечает за кодировку
'   создаваемого файла: True - Unicode, False - ASCII.
'================================================================
' Examples / Приклади / Примеры:
' %L "c:\path\Filelist.lst" 1 1 1
' %P%N Filelist.lst 0 0 0
'================================================================
' Script:        FileListDreamLair.vbs
' Author:        Batya & LonerD
' Build:        1.4 (2012.08.27)
' OfSite:        http://dreamlair.net
'================================================================

Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Cnt = WScript.Arguments.Count
If Cnt < 4 Then Wscript.Quit

With WScript.Arguments
  FF = .Item(0) : TargetList = .Item(1) : Recursive = .Item(2) : Relative = .Item(3) : NewFile = .Item(4)
End With

FolderMode = FSO.FolderExists(FF)
If FolderMode Then
  CurrentFolder = FF
Else
  CurrentFolder = CreateObject("WScript.Shell").CurrentDirectory
End If
If Right(CurrentFolder, 1) <> "\" Then CurrentFolder = CurrentFolder & "\"
LenCF = Len(CurrentFolder)

If InStr(TargetList, ":") = 0 Then TargetList = CurrentFolder & TargetList

If FolderMode Then
  List = Process(CurrentFolder)
Else
  With FSO.OpenTextFile(FF, 1)
    Do While Not .AtEndOfStream
      F = .ReadLine : List = List & Process(F)
    Loop
  End With
End If

If NewFile = 1 Then TargetList = NextName(TargetList)
FSO.CreateTextFile(TargetList, True, True).Write List

Set FSO = Nothing : Wscript.Quit()

Function Process(pPath)
  If FSO.FileExists(pPath) Then Process = Cut(pPath) & vbNewLine
  If FSO.FolderExists(pPath) Then
    If Recursive = 0 Then
      Process = Cut(pPath) & vbNewLine
      Else
      For Each lF in FSO.GetFolder(pPath).Files
        Process = Process & Cut(lF) & vbNewLine
      Next
      For Each lF in FSO.GetFolder(pPath).SubFolders
        Process = Process & Process(lF)
      Next
    End If
  End If
End Function

Function Cut(pPath)
  Cut = FSO.GetAbsolutePathName(pPath)
  If Relative = 1 Then Cut = Mid(Cut, LenCF + 1)
End Function

Function NextName(pFilePath)
  Const lQ = 2 'Мінімальна кількість цифр в номері
  With CreateObject("Scripting.FileSystemObject")
    lPath = .GetParentFolderName(pFilePath)
    If lPath <> "" Then lPath = lPath & "\"
    lName    = .GetBaseName(pFilePath)
    lExt     = .GetExtensionName(pFilePath)
    NextName = lPath & lName & lAdd & "." & lExt
    Do While .FileExists(NextName)
      li = li + 1
      If li < 10^lQ Then
        lAdd = Right(String(lQ, "0") & li, lQ)
      Else
        lAdd = li
      End If
      NextName = lPath & lName & "_" & lAdd & "." & lExt
    Loop
  End With
End Function
'================================================================


Добавлено.
Скрипт слегка оптимизирован, спасибо Batya за советы.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1172
Location: Макеевка

Post (Separately) Posted: Sun Feb 17, 2013 23:33    Post subject: Reply with quote

Вопросы по скрипту из предыдущего поста.
1. Каким образом в создаваемый список можно добавить файлы, у которых имена в юникоде? Сейчас такие файлы просто пропускаются скриптом.
2. Каким образом можно создавать список в формате UTF-8 ?
Сейчас если указать в команде CreateTextFile третий параметр True - создаётся файл в формате UTF-16 LE
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Feb 17, 2013 23:43    Post subject: Reply with quote

LonerD
1. В каком юникоде? Если в UTF-16 LE, то см. мои скрипты с %WL (For Each F in Split..).
2. Странный вопрос. Открыть в текстовом редакторе, сохранить в UTF-8. В ТС - %UL.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5
Page 5 of 5

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group