View previous topic :: View next topic |
Author |
Message |
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Tue Dec 22, 2009 20:31 Post subject: Как найти по одному файлу каждого типа |
|
|
Продолжаю заниматься ассоциированием, и цель не пропустить ни одного расширения. А потом пришла мысль - на диске найти все файлы по одному разных типов. Как это сделать? Поиском? скриптом? |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6161 Location: Москва
|
(Separately) Posted: Tue Dec 22, 2009 22:40 Post subject: |
|
|
Andrey_A
Скрипты тут особо не нужны. Глобальный поиск Тоталом (не забудь отметить, чтоб искал только файлы), скопировать список в буфер, дальше любым пристойным текстовым редактором отрезать всё, кроме расширений, удалить дубликаты и отсортировать. В EmEditor'е, в частности, всё это делается на ура. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Tue Dec 22, 2009 23:55 Post subject: |
|
|
Andrey_A, уточни,
нужно перечислить все существующие расширения (без имён)
или найти по одному файлу каждого расширения?
И если второе, в каком виде сделать выходной список:
d:\path\file.ext
d:\path\file2.ext2
или
ext d:\path\file.ext
ext2 d:\path\file2.ext2 |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Wed Dec 23, 2009 00:38 Post subject: |
|
|
Andrey_A, надеюсь, я понял тебя правильно.
В начале .cmd добавь/удали нужные буквы дисков.
Code: | @echo off &chcp 1251 >nul
setlocal enableextensions
title C:\
dir c: /a-d/b/s/oe >c:\_all_files.tmp
title D:\
dir d: /a-d/b/s/oe >>c:\_all_files.tmp
title E:\
dir e: /a-d/b/s/oe >>c:\_all_files.tmp
for /f "delims=" %%f in (c:\_all_files.tmp) do (
echo %%~xf: "%%f">> c:\_ext_files.tmp
)
sort c:\_ext_files.tmp /o c:\_sort_exts.tmp
del /q c:\_all_files.tmp &del /q c:\_ext_files.tmp
set "e=."
for /f "tokens=1,*" %%e in (c:\_sort_exts.tmp) do (
title .%%e &call :compare %%e %%f
)
del /q c:\_sort_exts.tmp &exit /b
:compare
if not "%e%"=="%1" (
echo %1 %2>> c:\_one_ext.txt
set "e=%1"
)
goto :eof |
Исправлено
Last edited by Tol!k on Tue Feb 23, 2010 00:57; edited 1 time in total |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2585 Location: Большая деревня Москва
|
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Wed Dec 23, 2009 04:00 Post subject: |
|
|
Quote: | =надеюсь, я понял тебя правильно |
Tol!k
Да, ты меня понял правильно, просто уточню: нужен список в обычной форме с:\...\файл.txt , чтобы я смог скопировать его в папку, но список нужен не всех на диске файлов, а только по одному от каждого вида. Т.е если программа поиска нашла файл.txt и добавила в лист, то при повторном нахождении файлов с расширением .txt, уже ничего не добавляется в список листа, и так с каждым расширением. |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Tue Dec 29, 2009 19:10 Post subject: |
|
|
Разве c:\_one_file.lst не то, что нужно? — "только по одному от каждого вида"
Quote: | если программа поиска нашла файл.txt и добавила в лист, то при повторном нахождении файлов с расширением .txt, уже ничего не добавляется в список | Алгоритм cложнее, а в итоге всё равно придётся прочесать весь диск. |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Mon Jan 11, 2010 17:29 Post subject: |
|
|
Случайно обнаружил готовый способ сделать требуемое (найти все типы файлов, присутствующих на диске): плагин VisualDirSize имеет этот функционал по умолчанию, плюс умеет сохранять отчёт о работе, содержащий тот самый список. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Tue Feb 23, 2010 00:58 Post subject: |
|
|
В батнике была недоработка. Исправил. |
|
Back to top |
|
|
|