Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8

Модерирует : KLASS, IFkO

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах 8
(часть 1, часть 2, часть 3, часть 4, часть 5, часть 6, часть 7)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Делаем паузу в командном файле стандартными средствами Windows
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    conty9

    Цитата:
    на экран выдаёт нужное значение, но переменную %Value% не устанавливает, и, соответственно, вытащить значения RHor / RVer / FHor у меня не получается. После нескольких часов пляски с бубном появилось желание разнести комп вдребезги.

    Только без нервов.
     
    Переменная %Value% существует только в контексте данного батника, т.к. установлено ограничение в виде setlocal. Лучше скажи что надо конкретно и как ты пытаешься эту переменную применить на деле.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:43 13-08-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r
    А можно получить именно полный путь к файлу "C:\Dir2\1.png"?

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 18:02 13-08-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    set dir2="C:\Dir2\"
    copy /b /y %1 %dir2%
    set dir2="%dir2%\1.png"

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 18:06 13-08-2010
    conty9



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM, мне нужно получить из текста три числовые переменные - разрешение по горизонтали, вертикали и частоту развёртки (RHor / RVer / FHor).
    Попутно - ещё вопросик - можно ли организовать ожидание на несколько секунд нажатия клавиши, скажем, M (если нажатие не произошло, или нажата любая другая клавиша - работаем дальше, а если нажал "М" - выход из батника). Пробовал с CHOICE, но там если нажать любую другую, кроме М, сбрасывает время - т.е., после этого ждёт до опупения, а не положенных пару секунд.

    Всего записей: 1700 | Зарегистр. 27-11-2006 | Отправлено: 18:08 13-08-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r
    проблема в том, что я не знаю как будет назваться 1.png, может 2.png или 3.png
    вот как можно это сделать?
     
    Добавлено:
    смотри задача такая, у меня есть файл C:\Dir1\1.png, вот надо заменить путь к файлу на C:\Dir2\1.png, можно это сделать?

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 18:10 13-08-2010 | Исправлено: lorents, 18:18 13-08-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    set file=%%~nx1
    REM Теперь %file% содержит имя файла...
    set dir2="C:\Dir2\"
    copy /b /y %1 %dir2%\%file%
     
    А путь к файлу ты где менять собираешься? В переменной, файле?

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 18:33 13-08-2010 | Исправлено: us0r, 18:39 13-08-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    conty9

    Код:
     
    @echo off
    setlocal
     
    for /f "tokens=1 delims=:" %%i in ('findstr /n "Preferred display settings" file.txt') do (
        set "skip=%%i"
        goto:next
    )
     
    :next
     
    for /f "tokens=1,2 delims==" %%i in ('more +%skip%  file.txt ^| findstr "Value"') do (
        call:set %%i %%j
    )
     
    for /f "tokens=1,2,4 delims=x " %%i in ("%Value%") do (
        set "vert=%%i"
        set "horz=%%j"
        set "freq=%%k"
    )
    echo %vert% %horz% %freq%
    goto:eof
     
    :set
    if not defined Value (set "%1=%~2")
     

     
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:43 13-08-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r

    Цитата:
    А путь к файлу ты где менять собираешься? В переменной, файле?

    в переменной файла

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 18:45 13-08-2010
    conty9



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM, спасибо ещё раз. Ключевое слово setlocal, без него не получалось! А по поводу дозированного ожидания нажатия кнопки никакую утиль не подскажешь?

    Всего записей: 1700 | Зарегистр. 27-11-2006 | Отправлено: 18:51 13-08-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Тебе %1 заменить?

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 18:54 13-08-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    conty9

    Цитата:
    А по поводу дозированного ожидания нажатия кнопки никакую утиль не подскажешь?

    Специально загрузил 7-ку, хоть и лень, но там из коробки choice.exe

    Код:
     
    @echo off
     
    choice /c "QWERTYUIOPASDFGHJKLZXCVBNM" /n /t 5 /d "Q" /m "Press M"
    if %errorlevel% equ 26 echo 1
     

    Т.е. здесь если выбирается "M" или "m" что-то делается. Иначе не делается ничего, точнее батник идет дальше. Пауза 5 сек.  

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:56 13-08-2010 | Исправлено: 01MDM, 19:04 13-08-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r
    да

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 18:59 13-08-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну, попробуй так:
    set var=%1
    set var="C:\Dir2\"
    REM Вариант с заменой пути и оставлением имени файла в оригинале...
    set var="C:\Dir2\%~nx1"
     
    Как- то так... А в теле обрабатывай не %1, а %var%...

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 19:19 13-08-2010 | Исправлено: us0r, 19:20 13-08-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r
    работает, большое спасибо!
     
    Добавлено:
    Объясните пожалуйста
    Почему файлы *.jpeg заносятся в таблицу Images.csv дважды? проблема именно с *.jpeg
    Вот пример таблицы Images.csv:

    Цитата:
    File name;Original Size;Output Size;Change in Bytes;% of Original
    image1.jpg;152436;152436;0;100
    image1.jpeg;152436;152436;0;100
    image1.jpeg;152436;152436;0;100

    Код:
    @echo off
    setlocal enabledelayedexpansion
     
    set logfile=Images.csv
    if not exist %logfile% echo File name;Original Size;Output Size;Change in Bytes;%% of Original>>%logfile%
     
    for /f "delims=" %%i in ('dir /b /s /a-d Images\*.jpg Images\*.jpeg Images\*.jpe') do (
        set origsize=%%~zi
        "%~dp0Docs\jhead.exe" "%%~fi"
        call :savelog "%%i" !origsize!
    )
    goto:eof
     
    :savelog
    set /a "change=%~z1-%2"
    set /a "perc=%~z1*100/%2"
    echo %~nx1;%2;%~z1;%change%;%perc%>>%logfile%
    exit /b


    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 19:34 13-08-2010 | Исправлено: lorents, 20:42 13-08-2010
    SergiusPl

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста, с батниками мало знаком.  
    Нужно запустить командную строку/запустить приложение дождаться пока оно отработает, запустить следующее, опять дождаться окончания работы и запустить следующее приложение.

    Всего записей: 28 | Зарегистр. 29-03-2009 | Отправлено: 20:41 13-08-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SergiusPl
    start "Kill after execution..." /wait %programname0%
    start "Kill after execution..." /wait %programname1%
    start "Kill after execution..." /wait %programname2%
    start "Kill after execution..." /wait %programname3%

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 20:44 13-08-2010
    SergiusPl

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r  
    Большое спасибо!

    Всего записей: 28 | Зарегистр. 29-03-2009 | Отправлено: 20:47 13-08-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    А с файлами .jpe всё впорядке?
    Попробуй на папке с .jpe и .jpeg.
    Потом раздели файлы по отдельным папкам и смотри как работает скрипт...

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 20:55 13-08-2010 | Исправлено: us0r, 21:02 13-08-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r
    я понял в чем дело. если поставить Images\*.jpg Images\*.jpe, без Images\*.jpeg, то он все равно видит файлы *.jpeg.
    если оставить только Images\*.jpg, то уже не видит.
    Выходит, он просто находит файл, у которых расширения начинаются с букв jpe, он смотрит только первые три буквы, и поэтому он дважды заносил, т.к. видел дважды.
    Это типа баг?

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 21:20 13-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    в досе допускались расширения только в три буквы (и имена в 6 потом 8) длинные имена сделали а длинные расширения нет, да и в винде как то не принято больше трех делать jpeg наверно единственный которое на ум приходит
    ну а батники это эмуляция доса под виндовс

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 21:30 13-08-2010 | Исправлено: bomzzz, 21:32 13-08-2010
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru