Добавление в поиск TC большого списка расширений файлов

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Re: Добавление в поиск TC большого списка расширений файлов

Сообщение Tol!k »

kdn писал(а):Может где-то или у кого-то есть плагины автоматизации
Представляю батник для обработки списков расширений: сортирует маски; удаляет дубликаты; делает список "в строчку";

Код: Выделить всё

@echo off &chcp 1251 >nul &setlocal enableextensions

rem  Важно: копируя код через буфер обмена удалите пробелы в конце каждой строки

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

if "%~1"=="" (echo Use: srt_.cmd duplicates.txt &pause >nul &exit /b)
call :create "%temp%\sbs2.com"

rem  "%temp%\sbs2.com" 0 ";" "$0d$0a" <"%~f1" >"%temp%\~ext.tmp"
"%temp%\sbs2.com" 0 " " "$0d$0a" <"%~f1" >"%temp%\~ext.tmp"
sort "%temp%\~ext.tmp" /o "%temp%\~srt.tmp" &del "%temp%\~ext.tmp" /q

set "e="
for /f "usebackq delims=" %%e in ("%temp%\~srt.tmp") do call :compare "%%~e"
del "%temp%\~srt.tmp" /q

"%temp%\sbs2.com" 0 "$22" "" <"%temp%\~ext.tmp" >"%temp%\~srt.tmp"
move "%~1" "%~1.bak"
rem  "%temp%\sbs2.com" 0 "$0d$0a" ";" <"%temp%\~srt.tmp" >"%~1"
"%temp%\sbs2.com" 0 "$0d$0a" " " <"%temp%\~srt.tmp" >"%~1"
del "%temp%\~ext.tmp" /q &del "%temp%\~srt.tmp" /q &exit /b

:compare
if not "%e%"=="%~1" (echo "%~1">> "%temp%\~ext.tmp"& set "e=%~1")
goto :eof

:create the assembler program, by Herbert Kleebauer
if "%~z1"=="659" goto :eof
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>  "%~1"
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU!WvX0GwUY Wv;ovBX2Gv0ExGIuht6>> "%~1"
echo ?@}IKuNWpe~Fpe?FNHlF?wGMECIQqo{Ox{T?kPv@jeoSeIlRFD@{AyEKj@>> "%~1"
echo iqe~1NeAyR?mHAG~BGRgB{~H?o~TsdgCYqe?HR~upkpBG?~slJBCyA?@xA>> "%~1"
echo LZp{xq`Cs?H[C_vHDyB?Hos@QslFA@wQ~~x}viH}`LYNBGyA?@xAB?sUq`>> "%~1"
echo LRy@PwtCYQEuFK@A~BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>> "%~1"
echo LHsPBGyA?@xAunjzA}EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>> "%~1"
echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?~}Nu??O>> "%~1"
echo ~oEwoAjBKs?Zp`LBzHQzyEFrAWAG{EFrAqAGYwHTECIQ{coKIsaCsf{Oe~>> "%~1"
echo CK}Ayre~CNFA{rAyEKFACrA{EKGAjbA}eKGSjNMtQFtc{OAyDGFj?{FDGQ>> "%~1"
echo KAjNVk_OCAx@e?f{o?CosI}1EGizhljJ~H1ZeG}JBA~rACBMDGjjDG@g0>>  "%~1"
if not "%~z1"=="659" (
echo  Удалите пробелы в конце каждой строки файла "%~nx0"
del "%~1" /q &pause >nul &exit)
goto :eof
Если в качестве разделителя масок вы используете не пробел, а точку с запятой, то раскомментируйте две заремленные строки с ";" и закомментируйте строки с " " рядом.

Важно: копируя код через буфер обмена удалите пробелы в конце каждой строки, иначе из-за этого батник будет работать неправильно!
Последний раз редактировалось Tol!k Чт мар 11, 2010 10:58, всего редактировалось 2 раза.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Tol!k
Даа, не удивляюсь этой Аве, мистер "МОЗГ"!)) Глядя на эти немецкие зашифровки снизу как-то нехорошо становиться.)) А батник cрабатывает великолепно! Только пишет:
  • Неправильная команда или имя файла.
    Невозможно загрузить поддержду VDM IPX/SPX
Параметры: %P%N
С ";" конечно лучше - место экономит, если записывать как маску, а не поисковой шаблон.
Здорово, а то самому приходилось делать несколько замен в блокноте. :)
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Flasher писал(а):Неправильная команда или имя файла.
Невозможно загрузить поддержду VDM IPX/SPX
В начале батника смени @echo off на @echo on и попробуй отследить что вызывает ругань, запустив cmd.exe /k srt_.cmd duplicates.txt
или cmd.exe /c srt_.cmd duplicates.txt > _log.txt 2>&1
Здесь уже писали, что в висте/7 нет команды chcp, но "VDM IPX/SPX" это что-то новенькое
Последний раз редактировалось Tol!k Ср мар 10, 2010 02:49, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Tol!k писал(а):попробуй отследить что вызывает ругань
Лог в личке.
Tol!k писал(а):в висте/7 нет команды chcp
До 7-ки ещё "не дорос". Виста мне и лицензионная даром не нужна. :D Пока сижу на ХРюше.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Добавил создание бэкапов файлов и проверку неудалённых пробелов в конце строк батника
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

... а можно чтобы батник не bak создавал, а просто добавлял к исходному файлу-списку в папку изменённый?
name.txt (исходный)
name_srt.txt (изменённый)
Закомментируйте или удалите строку move "%~1" "%~1.bak", а следующие две строки замените на

Код: Выделить всё

rem  "%temp%\sbs2.com" 0 "$0d$0a" ";" <"%temp%\~srt.tmp" >"%~n1_srt%~x1"
"%temp%\sbs2.com" 0 "$0d$0a" " " <"%temp%\~srt.tmp" >"%~n1_srt%~x1"
Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Сообщение Моторокер »

Как таблицу преобразовать в список.
Копируем весь документ.
В Ворде Правка|Специальная вставка - Неформатированный текст (чтобы быстрее)
Выделить нужное.
Таблица - Преобразовать в таблицу. Разделитель - табулятор.
Удалить лишний столбец.
Таблица - Преобразовать в текст.
Правка - Заменить "^p" (знак абзаца) на " *" (пробел_ёжик)
Доработать немного ручками.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

есть список вида:
jpg jpg
bmp bmp
gif gif

Tol!k
Что менять в батнике для достижения аналогичного результата?
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Ничего, такая ситуация предусматривалась.
Только *. он не добавляет, придётся тебе самому.
Последний раз редактировалось Tol!k Вс май 23, 2010 17:54, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Tol!k писал(а):Ничего.
Хм. Ну а для моего случая можно что-нибудь эдакое придумать?
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Ну пройдись автозаменой пробела на " *."

Хотя, вставь
if not "%e%"=="%~1" (echo "*.%~1">> "%temp%\~ext.tmp"& set "e=%~1")
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Меняю здесь:

Код: Выделить всё

compare
if not "%e%"=="%~1" (echo "%~1">> "%temp%\~ext.tmp"& set "e=%~1")
goto :eof
В итоге: с пробелами работает, а с ";" дубликаты не удаляются.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Во входном файле у тебя пробелы, значит при первом выборе " " или ";" нужно выбирать пробел.
Была у мну задумка передавать разделители параметрами, щаз сделаю
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Я бы его выбрал, если бы он меня устраивал. :wink:
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Ты не понял, пробелы во входном файле нужно принять как данность. А вот на выходе ты можешь выбрать ";"

Но я уже сделал передачу разделителей параметрами, теперь в батнике ничего менять не нужно.
В твоём случае параметры: %P%N " ;" "*."
Ответить