Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 8

Автор: mugil_cephalus
Дата сообщения: 16.07.2010 10:52
wolf0425
chcp 1252
dir /b кирилица.png
Автор: lorents
Дата сообщения: 16.07.2010 14:01
wolf0425

Цитата:
а у тебя что - расширение не жестко прошитое .png?

есть еще проблема с jpeg, а там много расширений

Ненавижу ImageMagick

mugil_cephalus

Цитата:
chcp 1252
dir /b кирилица.png

все равно не хочет
Автор: wolf0425
Дата сообщения: 16.07.2010 16:09

Цитата:
chcp 1252
dir /b кирилица.png
ну, а у тебя самого то это работает, проверял?
и в какой кодировке предлагается сохранять такой батник - в 1252 нету нужных символов для имени "кирилица".


Добавлено:
lorents
Цитата:
есть еще проблема с jpeg, а там много расширений
много - это больше двух?

чего ты хотел - cделать копию с сохранением расширения?
например так - сору /b кирилица.jpg tmp.*
Автор: lorents
Дата сообщения: 16.07.2010 16:39
wolf0425

Цитата:
много - это больше двух?

их четыре jpeg, jfif, jpg или jpe


Цитата:
чего ты хотел - cделать копию с сохранением расширения?

уже не важно все равно не выйдет, сейчас попросил одного человека написать одну программу нужными мне функциями, надеюсь все получится
Автор: wolf0425
Дата сообщения: 16.07.2010 18:26

Цитата:
уже не важно все равно не выйдет
это ещё почему? с тривиальными именами в текущем каталоге ImageMagick вполне работает, чего ещё надо то?
Хотя монстрик, конечно, опухший и глюкавенький.
Автор: older
Дата сообщения: 17.07.2010 10:21
что вы паритесь с этой кирилицей?
копируете ваш файл кирилица.png куда-нибудь с путями без кирилицы имя файла заодно меняете, например c:\temp\file.png
скармливаете вашему ImageMagick,
а потом результат копируете обратно назад с его изначальным именем
конечно это дольше, но это будет работать всегда
Автор: mugil_cephalus
Дата сообщения: 17.07.2010 11:26
wolf0425

Цитата:
ну, а у тебя самого то это работает, проверял?

проверял, но все зависит от проги
это с кракозябрами , но работает
Код: chcp 1252
echo.ЏаЁўҐв
Автор: res2001
Дата сообщения: 17.07.2010 12:27
mugil_cephalus
Пример с assoc не показателен - она слишком быстро валит сообщения на экран и заканчивается очень быстро. Если запустить assoc >null - отработает практически моментально.
Так же и в форе - ты не увидишь задержку при выполнении команды, а сразу пойдет разбор вывода.
Думаю, что от проги нифига не зависит.
wolf0425 что ты думаешь по этому поводу?
Автор: mugil_cephalus
Дата сообщения: 17.07.2010 12:55
res2001
route print

Добавлено:
dir /b /a ?

Добавлено:
attrib ?

Добавлено:

Цитата:
Если запустить assoc >null - отработает практически моментально.

тогда какой смысл ее запускать в цикле , если stdout в nul ?
Автор: res2001
Дата сообщения: 17.07.2010 13:26
mugil_cephalus

Цитата:
тогда какой смысл ее запускать в цикле , если stdout в nul ?

ессно в нул не надо сказал я это, чтоб было понятно, что команда выполняется очень быстро и на глаз не определить как выводится обработка вывода в форе - то ли после выполнения команды, то ли во время.
Все приведенные тобой команды тож ничего не доказывают - слишком быстро выполняются.
Надо изобрести какой-нить способ протестировать этот момент. Пока в голову ничего путного не приходит. А на глаз видно только если команда отрабатывает достаточно продолжительное время.

Вот кстати на счет дира - надо найти каталог с большим количеством файлов, вложенных подкаталогов и рекурсивно на него дир натравить. Может тогда будет понятней.
Автор: mugil_cephalus
Дата сообщения: 17.07.2010 13:32
res2001
у меня ощущение, что мы собираем "сферического коня в вакууме"
Автор: res2001
Дата сообщения: 17.07.2010 13:32
угу, с диром получилось.
Кстати, по ощущениям - вывод на экран в цикле работает быстрее, чем если бы сама прога валила бы все на экран.

Добавлено:
mugil_cephalus

Цитата:
у меня ощущение, что мы собираем "сферического коня в вакууме"

Ничего подобного. К этому вопросу уже дважды приходили за последние 50 страниц в этом топике.
Провел эксперимент. Натравил дир на каталог с ~26000 файлов с подкаталогами и проч. Вот результаты замера времени:
time=14:31:51.71 - начало эксперимента
dir /s
time=14:32:25.79 конец дира, начало фора
for in ('dir /s')
time=14:32:55.65 - конец фора.
Фор выполняется в целом на 4 сек. меньше чем одиночный дир.
Думаю этот выигрыш происходит из-за отсутствия переключения контекстов, или что-то типа того
Автор: wolf0425
Дата сообщения: 17.07.2010 14:25

Цитата:
Фор выполняется в целом на 4 сек. меньше чем одиночный дир.
а теперь поменяй команды местами, чтоб системное кэширование помогало не только фору а и голому диру.
или просто поставь ещё один dir /s до замера времени.
Автор: res2001
Дата сообщения: 17.07.2010 16:12
wolf0425
да, со временем все не так однозначно.
Автор: wolf0425
Дата сообщения: 17.07.2010 19:47

Цитата:
Вот кстати на счет дира - надо найти каталог с большим количеством файлов, вложенных подкаталогов и рекурсивно на него дир натравить. Может тогда будет понятней.
я не очень понимаю что вы меряете, но с диром понять мало что можно - у него собственно вывод очень быстрый и одноразовый, тормозить будет скан диска и отрисовка скроллинга.

держите медленно печатающую команду

Код: for /f "delims=" %%a in ('ping localhost') do title %%a & echo.%%a
Автор: res2001
Дата сообщения: 18.07.2010 07:54
wolf0425
Начало на прошлой странице
А тут просто пытались на примерах доказать, что обработка вывода в форе идет после выполнения команды, а не во время его.
А замеры времени - это фигня, особо к теме не относящаяся просто к слову пришлось.
Автор: wolf0425
Дата сообщения: 18.07.2010 08:35

Цитата:
А тут просто пытались на примерах доказать, что обработка вывода в форе идет после выполнения команды, а не во время его.
ну вот с пингом и видно замечательно - он то выполняется 4 секунды, фор всё это время молчит, а потом все строки моментом выплевывает.


Добавлено:
а вообще для параллельного отображения и записи лога есть команда tee, точнее её разные порты для виндов. Только вот буферирование у неё - afaik несколько килобайт, типа 6-8 в разных модификациях, а вовсе не построчное.
т.е. для короткой одноразовой выдачи или для просмотра длиииииннной простыни - годится, а для оперативного присмотра сколько там % напечатано - нет.
Автор: mugil_cephalus
Дата сообщения: 18.07.2010 09:15
wolf0425
http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=2840#7
твое мнение?

Добавлено:

Цитата:
ну вот с пингом и видно замечательно - он то выполняется 4 секунды, фор всё это время молчит, а потом все строки моментом выплевывает.

а route print , attrib , ftype , fsutil fsinfo , tasklist ?
у ping'a , ipconfig и других сетевых прог - динамический сбор инфы, у остальных инфа статична, то есть готова к stdout или stderr
p.s.
купание красного коня петрова-водкина нам не светит, а сферического коня в вакууме сварганим...

Добавлено:

Цитата:
Добавлено:
а вообще для параллельного отображения и записи лога есть команда tee, точнее её разные порты для виндов. Только вот буферирование у неё - afaik несколько килобайт, типа 6-8 в разных модификациях, а вовсе не построчное.
т.е. для короткой одноразовой выдачи или для просмотра длиииииннной простыни - годится, а для оперативного присмотра сколько там % напечатано - нет.

тогда уж проще

Цитата:
lorents

Код:1>%temp%\png.log 2>&1 "%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 %1
type %temp%\png.log

Автор: wolf0425
Дата сообщения: 18.07.2010 09:39

Цитата:
тогда уж проще
если лог пересоздается каждый раз - то да, проще, чего извращаться то.
А если надо аппендить к общему - то хз что проще.


Добавлено:

Цитата:
твое мнение?
а чего мое мнение? ну работают русские буковки в качестве переменных цикла - это же не значит, что их и нужно там использовать, мне как-то и 62 хватало, а вообще я более десятка разом использовал только однажды, afair (там более десятка в одном /f цикле и было, плюс ещё пара циклов)

но вообще надо для прикола посмотреть - что там при смене страницы творится, может можно раздельно русские 1251 и русские кои8 поюзать.
Автор: mugil_cephalus
Дата сообщения: 18.07.2010 09:46
wolf0425

Цитата:
а чего мое мнение? ну работают русские буковки в качестве переменных цикла - это же не значит, что их и нужно там использовать, мне как-то и 62 хватало, а вообще я более десятка разом никогда не использовал.

а любопытство - уже не мотив ?
Автор: wolf0425
Дата сообщения: 18.07.2010 09:48

Цитата:
а любопытство - уже не мотив ?
в такую жару -нет
Автор: mugil_cephalus
Дата сообщения: 18.07.2010 09:52
wolf0425

Цитата:
в такую жару -нет

ты тоже плавишся в москве ?

Добавлено:

Цитата:
может можно раздельно русские 1251 и русские кои8 поюзать.

а почему нельзя - коды то символов разные, кажется ,...
Автор: NIKZZZZ
Дата сообщения: 18.07.2010 10:16

Цитата:
а почему нельзя - коды то символов разные, кажется ,...

Русские буквы работают, нужно только учитывать, что в dos кодировке у них другая последовательность.
Пример:

Код: for /f "usebackq tokens=1,2,3,4 delims= " %%а in ('1 2 3 4') do echo %%а %%б %%в %%г
Автор: lorents
Дата сообщения: 18.07.2010 16:25
Поздравьте меня, я наконец то нашел альтернативу imagemagick, точнее ее написали по моей просьба. Простите за

и еще где можно прочитать про параметр copy /#?
Просто я сейчас использую

Код: copy "%%~fi" "%%~dpni_nopngkt.png"
Автор: wolf0425
Дата сообщения: 18.07.2010 16:49

Цитата:
и еще где можно прочитать про параметр copy /#?
copy /? ????



Цитата:
но не знаю надо какие-то параметры перед copy или нет?
ну перед - параметров точно не бывает, а /b /y я бы наверно в ключики добавил...


Автор: lorents
Дата сообщения: 18.07.2010 16:59
wolf0425

Цитата:
ну перед - параметров точно не бывает

точно, ошибочка вышла

Цитата:
/b /y я бы наверно в ключики добавил...

ок, так и сделаю, спасибо
Автор: IFKey
Дата сообщения: 18.07.2010 17:49
Подскажите пожалуйста, пытаюсь сделать запуск нескольких програм одновременно, через ярлыки:
run.cmd

Цитата:
Skype.lnk
QIP_2005.lnk
Mail_Ru_Агент.lnk

все это лежит в одной папке, не работает.
Пытался четко пути прописывать:

Цитата:
"Application Data\Mail.Ru\Agent\magent.exe"
"C:\Program Files\Skype\Phone\Skype.exe"
"C:\Program Files\QIP\qip.exe"

работало но странно, по отдельности каждая строка запускается нормально, а все в месте когда, запускается только первая, или масимум вторая. мудрил мудрил, но там и не сделал.
Как сделать запуск этих трех программ разом через bat фаил?
Автор: res2001
Дата сообщения: 18.07.2010 17:55
IFKey
start "" "Application Data\Mail.Ru\Agent\magent.exe"
start "" "C:\Program Files\Skype\Phone\Skype.exe"
start "" "C:\Program Files\QIP\qip.exe"
Автор: wolf0425
Дата сообщения: 18.07.2010 17:56
IFKey
Цитата:
через ярлыки:run.cmd

ярлыки из батника запускаются так:

Код: start "" Skype.lnk
start "" QIP_2005.lnk
start "" Mail_Ru_Агент.lnk
Автор: lorents
Дата сообщения: 18.07.2010 19:12

Код: call :compare "%%~dpni_pro.tmp" "%%~dpni_opt.tmp" "%%~fi" "%%~nxi"

:compare
if %~z1 LSS %~z2 (
    DEL /F /Q %2
    DEL /F /Q %3
    REN %1 %4
) else (
    DEL /F /Q %1
    DEL /F /Q %3
    REN %2 %4
)
exit /b

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.