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

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

Автор: ComradG
Дата сообщения: 21.06.2010 15:51
wolf0425
Я не про того бармалея, о котором ты писал чуть выше. Имелось в виду, что от чего отталкивались, к тому и пришли, но с маленькой поправкой.

Код:
if /i "%1"=="/c" (
goto:cabfile
) else if /i "%1"=="/z" (
goto:zipfile
) else if /i "%1"=="/?" (
goto:message
) else (
goto:message
)
Автор: lorents
Дата сообщения: 21.06.2010 15:58
Хотел попросить, не мог ли кто-нибудь посмотреть на мой batch

[more]
Код:
@echo off
for /f "delims=" %%i in ('dir /b /s /a-d Dir1\*.png') do (
    "%~dp0Docs\prepng.exe" "%%~fi"
    for %%m in (0 1 2 3 4 5) do "%~dp0Docs\pngout.exe" /f%%m "%%~fi" "%%~dpni_%%m.png"
rem call :compare "%%~dpni_0.png" "%%~dpni_1.png" "%%~dpni_2.png" "%%~dpni_3.png" "%%~dpni_4.png" "%%~dpni_5.png" "%%~fi" "%%~nxi"
)
goto:eof

for /f "delims=" %%i in ('dir /b /s /a-d Dir2\*.png') do (
    "%~dp0Docs\prepng.exe" "%%~fi"
    call :pngopt "%%~fi"
    "%~dp0Docs\advpng.exe" -z -4 "%%~fi"
    "%~dp0Docs\deflopt.exe" "%%~fi"
)
goto:eof

for /f "delims=" %%i in ('dir /b /s /a-d Dir3\*.png') do (
"%~dp0Docs\prepng.exe" "%%~fi"
"%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 -full -force "%%~fi"
"%~dp0Docs\advpng.exe" -z -4 "%%~fi"
"%~dp0Docs\deflopt.exe" "%%~fi"
"%~dp0Docs\pngout.exe" "%%~fi"
"%~dp0Docs\advpng.exe" -z -4 "%%~fi"
"%~dp0Docs\deflopt.exe" "%%~fi"
)
goto:eof

for %%i in (.\dir1\*.*) do (
    call :print "%%~nxi" "dir1\%%~nxi" "dir2\%%~nxi" "dir3\%%~nxi"
)
goto:eof

:pngopt
"%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 -full -force %1 > %temp%\png.log
for /f "delims==,IDAT tokens=5" %%i in (%temp%\png.log) do (
    set f=%%i
)
set f=%f:~1,1%
del %temp%\png.log
"%~dp0Docs\prepng.exe" %1
"%~dp0Docs\pngout.exe" /k0 /n2 /f%f% %1
goto:eof

: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
)
goto:eof

:print
echo %1        %~z2    %~z3    %~z4 >> PNG.txt
exit /b
Автор: wolf0425
Дата сообщения: 21.06.2010 16:01

Цитата:
Стоило ради этого разводить дискуссию
стоило, у тебя отсутствие такого финального else - неоднократно повторенная уже ошибка, вылет кода на деструктивный участок в случае ошибки ввода при таком тиражировании ошибки в коде - чисто вопрос количества повторений и удачи, на что я и хотел обратить твое внимание. И не воспринимай это как наезд.
Автор: ComradG
Дата сообщения: 21.06.2010 16:04

Цитата:
не воспринимай это как наезд

Ну что ж, потешим твое самолюбие, и скажем, что ты прав.

Цитата:
неоднократно повторенная уже ошибка

Да ну?!
Автор: res2001
Дата сообщения: 21.06.2010 16:05
ComradG
Можно вообще ограничиться этим:

Код:
if /i "%1"=="/c" (
goto:cabfile
) else if /i "%1"=="/z" goto:zipfile
:message
...
Автор: wolf0425
Дата сообщения: 21.06.2010 16:05
ComradG
Цитата:
раз я ничего путного предложить не смог, то и, пожалуй, удалюсь.
да тут тема называется "Задачи на bat-файлах" - т.е. кто-то приходит с проблемой, ему подсказывают советами.
ты попросил оценить твой код - получил оценки и советы где конкретно надо писать более аккуратно, после этого чем-то недоволен.
А предлагать помощь ты пока никому (из тех кто тут за нею обращался) не предлагал...

Добавлено:
Цитата:
Да ну?!
ну ДА! можно прочесать тему и найти пример ещё.
это ДЕЙСТВИТЕЛЬНО надо или на слово поверишь?
Автор: ComradG
Дата сообщения: 21.06.2010 16:10

Цитата:
Можно вообще ограничиться этим

А стоит ли?

Цитата:
Ты спросил, мы ответили, ты не понял, я пояснил, но ты опять не понял.

У вас что - кооператив крутых батописателей? И вообще кто это - мы? Ну и наконец, почему самы вы уверены в своих батниках на все сто? Как гворится в чужом глазу соринку видишь, в своем не видишь и бревна. И наконец, если хотите указать на ошибки, сперва похвалите (С)Е.Шварц

Добавлено:

Цитата:
получил оценки и советы

Чистой воды гон. Я просил идей, а свой скрипт позиционировал как набросок, так что не надо обвинять меня в том, чего я еще не сделал.
Автор: king_stiven
Дата сообщения: 21.06.2010 16:16
Хватит зажигать, смешно ведь
lorents вообще отжёг насчёт трёх файлов в одной папке с одинаковыми именами Ты фольфычу отстегни от своих доходов, он и так за тебя батник написал, а так он его тебе отладит чётко.
Автор: wolf0425
Дата сообщения: 21.06.2010 16:17

Цитата:
И вообще кто это - мы?
замечания по той пачке if тебе сделали двое. мы.

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

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

Цитата:
И наконец, если хотите указать на ошибки, сперва похвалите
будет за что - обязательно похвалим.
единственным способом сделать чтоб тут не указывали на ошибки - является не писать сюда код с ошибками.

Автор: res2001
Дата сообщения: 21.06.2010 16:23
ComradG

Цитата:
А стоит ли?

Никто не настаивает.
Но я бы, на твоем месте, хотя бы попробовал и протестировал. "А если нет разницы, зачем платить больше?" Реклама.
Автор: ComradG
Дата сообщения: 21.06.2010 16:28
Автор: king_stiven
Дата сообщения: 21.06.2010 16:31
ComradG
Вот тут чуваку помощь нужна
http://forum.ru-board.com/topic.cgi?forum=5&topic=33080&start=460#12
Автор: lorents
Дата сообщения: 21.06.2010 16:39
Подскажите пожалуйста, как можно изменить данный код, чтобы он сравнивал 5 файлов, а не два, как сейчас:

Код: call :compare "%%~dpni_0.png" "%%~dpni_1.png" "%%~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
)
goto:eof
Автор: res2001
Дата сообщения: 21.06.2010 16:43
lorents
алгоритм сравнения в студию.
Автор: tolyn77
Дата сообщения: 21.06.2010 16:47
привет, всем
подскажите как узнать все компьютеры в домене?
заранее благодарен
Автор: lorents
Дата сообщения: 21.06.2010 16:48
res2001
я вроде как его написал
Автор: res2001
Дата сообщения: 21.06.2010 17:04
lorents
прочитал 2 страницы назад - не увидел.
Если писал дай ссылку или повтори, для непонятливых
Автор: lorents
Дата сообщения: 21.06.2010 17:05
res2001
так вот же он

Код: call :compare "%%~dpni_0.png" "%%~dpni_1.png" "%%~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
)
goto:eof
Автор: res2001
Дата сообщения: 21.06.2010 17:09
lorents

Это реализация сравнения двух файлов.
Как ты хочешь сравнивать 5 файлов? опиши словами
К тому же, в приведенном примере только 4 параметра (файла).
Автор: lorents
Дата сообщения: 21.06.2010 17:14
res2001
у меня есть пять файлов и мне надо их сравнить по размеру, у кого самый маленький оставить и переименовать в "%%~fi", а все остальные удалить


Цитата:
К тому же, в приведенном примере только 4 параметра (файла).

там сравниваются по размеру два файла %%~dpni_0.png" и "%%~dpni_1.png", тот кто меньше весит остается и переименовывается, другой удаляется
Автор: wolf0425
Дата сообщения: 21.06.2010 19:49
tolyn77
Цитата:
подскажите как узнать все компьютеры в домене?
net view /domain


Добавлено:
lorents
Цитата:
у меня есть пять файлов и мне надо их сравнить по размеру

вот тебе пример:

Код: @echo off
1>file1 echo.11
1>file2 echo.222
1>file3 echo.3
1>file4 echo.4444
1>file5 echo.55555

call :compare file1 file2 file3 file4 file5 file.target
exit
:compare
move /y %1 %6
if %~z2 lss %~z6 (move /y %2 %6 ) else del %2
if %~z3 lss %~z6 (move /y %3 %6 ) else del %3
if %~z4 lss %~z6 (move /y %4 %6 ) else del %4
if %~z5 lss %~z6 (move /y %5 %6 ) else del %5
exit /b
Автор: res2001
Дата сообщения: 21.06.2010 21:26
Пытался сделать нахождение наименьшего из 5 файлов, получился общий случай нахождения файла наименьшего размера не зависимо от количества:

Код: @echo off
setlocal ENABLEDELAYEDEXPANSION
call :comparen %*
goto :eof

:comparen
set minn=%~z1
set minv=%1
set /a count=1
for %%i in (%*) do (
    if !count! neq 1 call :compare2 !minv! %%i
    set /a count+=1
)
echo минимальный размер !minv!=!minn!
exit /b

:compare2
if %~z2 lss %~z1 (
    set minn=%~z2
    set minv=%2
)
exit /b
Автор: lorents
Дата сообщения: 21.06.2010 21:51
wolf0425
я как пониманию file1 - это один из сравниваемый файлов, для чего echo.11?

res2001
интересный пример

wolf0425, res2001
Спасибо Вам большое!
Автор: wolf0425
Дата сообщения: 21.06.2010 21:53

Цитата:
я как пониманию file1 - это один из сравниваемый файлов, для чего echo.11?
там в начале блок echo чтоб создать пять файлов разной длины.
Не руками же их создавать для проверки, тем более что лишние после проверки должны удаляться.
А что - без пояснений это не очевидно?
Автор: king_stiven
Дата сообщения: 21.06.2010 23:47
wolf0425

Цитата:
А что - без пояснений это не очевидно?

Чукча не читатель, чукча писатель.
Автор: tolyn77
Дата сообщения: 22.06.2010 06:23
wolf0425
на сколько я понимаю с 98 это не прокатит?, а вот на серваке есть такая оснастка computer and user, в ней есть список компьютеров, его как нибудь можно выципить?
Автор: king_stiven
Дата сообщения: 22.06.2010 07:00
tolyn77

Цитата:
а вот на серваке есть такая оснастка computer and user, в ней есть список компьютеров, его как нибудь можно выципить?

Да, разобрать вывод.
Автор: res2001
Дата сообщения: 22.06.2010 07:38
ComradG

Цитата:
Можно вообще ограничиться этим:

Код: if /i "%1"=="/c" (
goto:cabfile
) else if /i "%1"=="/z" goto:zipfile
:message
...

Автор: tolyn77
Дата сообщения: 22.06.2010 09:06
king_stiven
что значит разобрать вывод?
а если я это хочу получить на клиентском компьютере, мне что оснастки ставить нужно?
Автор: res2001
Дата сообщения: 22.06.2010 10:03
tolyn77

Цитата:
что значит разобрать вывод?

значит обработать вывод команды net view

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

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


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