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

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

Автор: Melhior
Дата сообщения: 10.07.2010 11:28
lorents

Цитата:
если я в командную строку ввожу

Код:
C:\convert.exe C:\image.png -format "%A" info:

но все нормально, мне выдает сообщение True или False в зависимости от картинки.
Но если я ввожу эту же строку в batch то мне выдает

Цитата:
convert.exe: option requires an argument `-format' @ error/convert.c/ConvertImageCommand/1503.


для батника код должен быть таким:
C:\convert.exe C:\image.png -format "%%A" info:


01MDM

Цитата:
В цикле обрабатываются только существующие файлы. Если нет ни одного соответствующего маске файла, то цикл даже не начнется. Проверяй до цикла

спасибо! получилось.
Автор: lorents
Дата сообщения: 10.07.2010 11:36
Melhior
спасибо, пойду разбираться дальше
осталось разобраться с кириллицей

Добавлено:
ComradG

Цитата:
Гляди в сторону %errorlevel%

я так и не понял как сделать это
Автор: BVV63
Дата сообщения: 10.07.2010 11:44
mugil_cephalus
Что-то туго до меня доходит. С |моre +4 не работает. С |more +2 выдаёт только первый файл подкачки. И честно говоря, не понял, за счёт чего такой For может все файлы достать.
Автор: Melhior
Дата сообщения: 10.07.2010 14:19

Цитата:
я так и не понял как сделать это

чуть голову себе не сломал... про %errorlevel% так ничего и не сообразил, но можно вот так:

Код: @echo off
for /f "tokens=*" %%i in ('c:\convert.exe c:\image.png -format "%%A" info:') do goto:%%i
:False
echo FALSE!
goto:fin
:True
echo TRUE!
goto:fin
:fin
pause
Автор: lorents
Дата сообщения: 10.07.2010 15:15
Melhior
Круто, спасибо, сильно выручил, не знаешь, как заставить, чтобы он работал с кириллицей?
Автор: ComradG
Дата сообщения: 10.07.2010 15:23
Melhior

Цитата:
про %errorlevel% так ничего и не сообразил

Ты вспомни азы программирования: если True значит 0, если False значит 1. Вот от этого и надо плясать.
Автор: lorents
Дата сообщения: 10.07.2010 15:32
ComradG

Код: @echo off
c:\convert.exe c:\image2.png -format "%%A" info:
echo %ERRORLEVEL%
pause
Автор: res2001
Дата сообщения: 10.07.2010 15:38
BVV63
Посмотри такой вариант

Код:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=3 delims=    " %%a in ('reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v PagingFiles ^| findstr "PagingFile"') do (
    set "val=%%a"
    set "val=^"!val:\0=^" ^"!^""
    call :printparam !val!
)
goto:eof

:printparam
if "%~1" equ "" exit /b
echo.%~1
shift
goto :printparam
Автор: Melhior
Дата сообщения: 10.07.2010 15:44
lorents
чтобы батник понимал кириллицу, она должна быть в досовском формате.
а если прога сама по себе кириллицу не понимает, боюсь, тут уже ничего не попишешь.

ComradG
это было первое, о чём я подумал. вот только получалось, что %errorlevel% был 0 вне зависимости от того, возвращала команда true или же false. хотя, может, я просто что-то не так делал - я отнюдь не спец.

Добавлено:
lorents
вот и у меня был 0 в любом случае
Автор: lorents
Дата сообщения: 10.07.2010 16:01
Melhior

Цитата:
чтобы батник понимал кириллицу, она должна быть в досовском формате.
а если прога сама по себе кириллицу не понимает, боюсь, тут уже ничего не попишешь.

а как это сделать?
Автор: wolf0425
Дата сообщения: 10.07.2010 16:20
Melhior
Цитата:
чтобы батник понимал кириллицу, она должна быть в досовском формате.
да что ты говоришь, а мужики то и не знают...
я вот уже не помню когда последний раз писал батник в досовском формате, мне как-то виндовый - больше нравится, в нем проблем с русскими именами - меньше
например с таким - "russian «кавычки» и — тире.jpg"


Цитата:
а если прога сама по себе кириллицу не понимает, боюсь, тут уже ничего не попишешь.
не попишешь, но 99% таких прог вымерло 10+лет назад и вероятность что lorents на такую наткнулся - почти никакая. нормальным прогам не надо понимать какую-то непонятную кирилицу, надо только понимать что есть текущая кодовая таблица и в ней работать.


Цитата:
вот только получалось, что %errorlevel% был 0 вне зависимости от того, возвращала команда true или же false. хотя, может, я просто что-то не так делал - я отнюдь не спец.
ну тогда фильтровать через find то что прога выводит и ветвиться по ошибке поиска.
Автор: ComradG
Дата сообщения: 10.07.2010 16:31
Melhior
Дык правильно: если у тебя не запущен, скажем, блокнот, а ты, например, напишешь что-то вроде

Код: tasklist /fi "windowtitle eq notepad" | echo %errorlevel%
Автор: wolf0425
Дата сообщения: 10.07.2010 16:31
lorents
Цитата:
@echo off
c:\convert.exe c:\image2.png -format "%%A" info:
echo %ERRORLEVEL%
pause
а что такое "%%A" - пример невнимательности ?
Автор: ur5tdk
Дата сообщения: 10.07.2010 16:36
Добрый день, подскажите как в бат-файле задать условие чтобы проверялась дата в таком виде:

Если СистемнаяДата > 01.07.2010 Тогда <Команда>



Спасибо!
Автор: lorents
Дата сообщения: 10.07.2010 16:45
wolf0425
Я использую программу из ImageMagick, а это новые программы, последнее обновление было несколько дней назад

Цитата:
а что такое "%%A" - пример невнимательности ?

%A это параметр, а для batch пришлось приписать такой знак %
Автор: wolf0425
Дата сообщения: 10.07.2010 16:50

Цитата:
Дык правильно: если у тебя не запущен, скажем, блокнот, а ты, например, напишешь что-то вроде
Код: tasklist /fi "windowtitle eq notepad" | echo %errorlevel%

то будет возвращен нуль
Автор: res2001
Дата сообщения: 10.07.2010 16:54
ur5tdk

Цитата:
Если СистемнаяДата > 01.07.2010 Тогда <Команда>


Код: set "DAY=%DATE:~0,2%"
set "MONTH=%DATE:~3,2%"
set "YEAR=%DATE:~6,4%"
if %YEAR% geq 2010 if %MONTH% geq 7 if %DAY% gtr 1 echo Больше
Автор: wolf0425
Дата сообщения: 10.07.2010 16:54

Цитата:
%A это параметр
брр... автор ImageMagick знает толк в извращениях...
так что ты в итоге хотел получить то этой командой? нафига тебе Альфа-канал?

Автор: ComradG
Дата сообщения: 10.07.2010 16:57
wolf0425
Ну да! А ты чего хотел? Я же написал: tasklist то сам инициализировался успешно!
Автор: wolf0425
Дата сообщения: 10.07.2010 17:06

Цитата:
Я же написал: tasklist то сам инициализировался успешно!
да пофиг как там tasklist инициализировался - его хоть на cd :: можно заменить, все равно напечатается 0
Автор: lorents
Дата сообщения: 10.07.2010 17:07
wolf0425

Цитата:
нафига тебе Альфа-канал?

приходится делить картинки на две группы с алафаканалом и без него.
Есть способ увеличить серьезно оптимизацию Png с альфаканалом.
а самое главное способ можно осуществить только через imagemagick
Автор: wolf0425
Дата сообщения: 10.07.2010 17:18

Цитата:
приходится делить картинки на две группы с алафаканалом и без него.
ну, а когда вышепроцитированная команда пишет %А - это convert.exe что хочет сказать? что альфаканала нет?
Автор: Melhior
Дата сообщения: 10.07.2010 17:19
wolf0425

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

а как сделать батник с виндовой кириллицей? чтоб и она нормально отображалась, и сообщения командной строки.
Автор: king_stiven
Дата сообщения: 10.07.2010 17:19
BVV63

Цитата:
Ну, типа:
c:\pagefile.sys 0 0\0d:\pagefile.sys 1024 2048\0e:\pagefile.sys 1024 1024

То есть пробелов в пути никогда не бывает? Пример:
c:\12 34\1.txt 0 0\0d:\pagefile.sys 1024 2048\0e:\pagefile.sys 1024 1024
Автор: Melhior
Дата сообщения: 10.07.2010 17:21
wolf0425

Цитата:
ну, а когда вышепроцитированная команда пишет %А - это convert.exe что хочет сказать? что альфаканала нет?

когда его нет, выдаётся False. когда есть - True.
Автор: wolf0425
Дата сообщения: 10.07.2010 17:27

Цитата:
а как сделать батник с виндовой кириллицей? чтоб и она нормально отображалась, и сообщения командной строки.
1. поставить консоли уникодный фонт, например идущую в комплекте виндов люсиду. тогда нормально отображаться будут не только кирилица, но и часть иероглифов и всякие умляуты.
2. в начале батника переключить текущую кодовую страницу на виндовую кодировку.
chcp 1251
3. текст батника пишется и сохраняется в виндовой кодировке
Автор: kostyamks
Дата сообщения: 10.07.2010 17:28
Помогите написать bat чтоб при запуске сразу открывался Hosts фаил в блокноте который находится по адресу C:\Windows\System32\drivers\etc\hosts
Зарание спасибо.
Автор: wolf0425
Дата сообщения: 10.07.2010 17:30

Цитата:
когда его нет, выдаётся False. когда есть - True.
мда, перегрев, я не из батника пробовал запустить ту же строку.
Хоть бы ругнулась на неправильный формат, что-ли.

ветвление делается тупо так:
Код: T:\2\ImageMagick-6.6.3-0\convert.exe Clipboard-3.png -format "%%A" info: |find /i "false" >nul && echo No Alpha channel
Автор: ComradG
Дата сообщения: 10.07.2010 17:35
kostyamks
А что сложного передать на исполнение hosts notepad'у?

Код: @echo off
notepad %systemroot%\system32\drivers\etc\hosts
exit /b
Автор: res2001
Дата сообщения: 10.07.2010 17:36
kostyamks
start "" notepad C:\Windows\System32\drivers\etc\hosts

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

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


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