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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    ComradG



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

    Цитата:
    никакой логики в том, что твой вариант на arc.cmd /x 123 456 начнет паковать каб - не видать

    В смысле, ты подставляешь несуществующий параметр? Это впринципе лечится:

    Код:
    if "%2"=="" goto:message  
    if /i "%1"=="/c" goto:cabfile  
    if /i "%1"=="/z" goto:zipfile
    if /i "%1"=="/?" goto:message
    if /i "%1"=="%*" (
      echo Wrong parameter! Use /? to see help.
      goto:eof
    )

    Или ты не про это? Можешь поточнее выразить свою мысль?

    Цитата:
    и кстати -mx%2 пишется через пробел

    Стоп! В качестве %2 указывется уровень сжатия - для 7za, если мне не изменяет память этот параметр выглядит как -mx5 или -mx9, т.е. пробелов там не надо.

    Цитата:
    да идеи как-то упростить себе вызов архиваторов с дефолтовым комплетом ключиков у многих на каком-то этапе возникают

    Согласись, что это экономит массу времени, сил и нервных клеток.

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 15:41 21-06-2010
    res2001



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

    Цитата:
    как можно перебрать значения параметра /f (от 0 до 5, все значения целые), и при этом чтобы в названии получившегося файла писалось значение параметра  


    Код:
    for /l %%i in (0;1;5) do команда

     

    Цитата:
    У меня есть папка, и в ней лежат три папки с одинаковыми названиями, но с разным размером, Как можно получить текстовой файл (таблицу с четырьмя колонками), где в первой колонке написано имя файла с расширением, а в трех остальных колонках размер файлов
     

    Как могут три папки с одинаковыми названиями находится в одном месте?
    Структуру опиши подробней. Какие имена фиксированы, какие нет.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 15:42 21-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    Цитата:
    В смысле, ты подставляешь несуществующий параметр? Это впринципе лечится:  
    а ты проверил бы...
    я про то, что всегда ложна быть явная ветка ветвления, на которую уходит при отсутствии совпадений с вариантами проверки.  Это я про ветвления по разным %1
    а твоя if /i "%1"=="%*"  - это примерно if  "%2"==""  
     

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 15:51 21-06-2010
    res2001



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

    Цитата:
    Согласись, что это экономит массу времени, сил и нервных клеток.

    да нифига это не экономит. Согласен, что из инета можешь вытянуть разнообразные архивы, но, как правило, сейчас это zip, rar, 7z, остальные экзотика. winrar и 7z умеют распаковывать из всех этих форматов.
    А упаковываешь, обычно, в одном формате, своим любимым архиватором.
     
    В конторе у меня для разных нужд используются cab, arj, jar - но там все упаковывается/распаковывается своими встроенными обработчиками, руками практически ничего не делается. Поэтому на мой взгляд ценность универсального упаковщика/распаковщика сомнительна.
     
    Добавлено:

    Цитата:
    Или ты не про это? Можешь поточнее выразить свою мысль?  

    Видимо wolf0425 имеет ввиду что-то такое:

    Код:
    if "%2"=="" (
          goto:message  
    ) else if /i "%1"=="/c" (
          goto:cabfile  
    ) else if /i "%1"=="/z" (
          goto:zipfile
    ) else if /i "%1"=="/?" (
          goto:message
    ) else (
      echo Wrong parameter! Use /? to see help.
      goto:eof
    )  


    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 15:51 21-06-2010
    lorents



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

    Цитата:
    скорее какой-то файлы не создался и сравнивать нечего  

    "%%~dpni_png1.png" и "%%~dpni_png2.png" они создаются, это точно
    "%%~fi" - дается изначально изначально
    Я как посмотрю сравниваются "%%~dpni_png1.png" и "%%~dpni_png2.png", а "%%~fi" нет
    вот почему я не заметил этого тогда, меня интересовали "%%~dpni_png1.png" и "%%~dpni_png2.png"

    Цитата:
    прочитай for /? и впиши правильно  


    Код:
    for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
    for %%m in (0 1 2 3 4 5) do  
    "%~dp0Docs\pngout.exe" /f%%m "%%~fi" "%%~dpni_%%m.png"
    )

    правильно?
     
    res2001

    Цитата:
    Как могут три папки с одинаковыми названиями находится в одном месте?  

    У меня есть папка, и в ней лежат три папки с одинаковыми названиями файлов, которые в папках, но с разным размером, Как можно получить текстовой файл (таблицу с четырьмя колонками), где в первой колонке написано имя файла с расширением, а в трех остальных колонках размер файлов

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

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 15:57 21-06-2010 | Исправлено: lorents, 16:04 21-06-2010
    wolf0425



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

    Цитата:
    Стоп! В качестве %2 указывется уровень сжатия - для 7za, если мне не изменяет память этот параметр выглядит как -mx5 или -mx9, т.е. пробелов там не надо.  
    в смысле - макс сжатие не хочешь, хочешь в параметре? ну можно и так, только мне вот точно влом каждый раз указывать степень сжатия.
     
    Добавлено:

    Цитата:
    Я как посмотрю сравниваются "%%~dpni_png1.png" и "%%~dpni_png2.png", а "%%~fi" нет  
    что тогда просил - то и сравнивается. просил ты именно сравнение двух файлов и замещение третьего одним из них
     
     
    Добавлено:

    Цитата:
    правильно?  
    да, вполне, только строку у второго for или не рви или ещё уровень скобок впиши
    т.е. ....5) do "%~dp0Docs\pngout.exe".....

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 16:01 21-06-2010 | Исправлено: wolf0425, 16:12 21-06-2010
    ComradG



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

    Цитата:
    да нифига это не экономит

    Это твое мнение, тем более как писалось выше 7za и cabarc взяты только для примера.
    А вот
    Цитата:
    Видимо wolf0425 имеет ввиду что-то такое

    wolf0425

    Цитата:
    а твоя if /i "%1"=="%*"  - это примерно if  "%2"==""

    Ну вот, уже к чему то приходим. Тем более я и имел в виду, что если писать if /i "%1"=="%*", то надобность в if "%2"=="" отпадает.

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

    Кудряво сказано, а проще что такое? (С)И.Гёте

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 16:06 21-06-2010
    wolf0425



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

    Цитата:
    а проще что такое? (С)И.Гёте
    тебе вписали -
    Код:
    ) else (
      echo Wrong parameter! Use /? to see help.
      goto:eof
    )  

    причем заметь что мой вариант записи - короче, а делает примерно то же (из-за перестановки :message)

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 16:07 21-06-2010 | Исправлено: wolf0425, 16:08 21-06-2010
    lorents



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

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

    понятно, спасибо

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

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



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

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

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 16:10 21-06-2010
    ComradG



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

    Цитата:
    в смысле - макс сжатие не хочешь, хочешь в параметре?

    Тебе влом. А представь ситацию, когда просто нужно быстро пожать файлы? Скорость то от степени сжатия зависит, так?

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 16:11 21-06-2010
    wolf0425



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

    Цитата:
    А представь ситацию, когда просто нужно быстро пожать файлы?  

    тогда я делаю это ФАРом со степенью сжатия по умолчанияю.

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 16:13 21-06-2010
    lorents



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

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

    а я могу вписать тогда пять файлов для сравнения, будет это работать?

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

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 16:18 21-06-2010
    ComradG



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

    Код:
    ) else (  
      echo Wrong parameter! Use /? to see help.  
      goto:eof  
    )  

    Похоже вы либо шутите, либо издеваетесь - это похоже на толкотню воды в ступе.

    Цитата:
    но мы тебе не верим

    Я тоже никому не верю: антивирусам, отладчикам и тем более женщинам

    Цитата:
    у тебя конечно может быть всё по другому

    Не знаю о чем ты, но я вроде бы все скрипты рабочие выкладываю.

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 16:18 21-06-2010
    res2001



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

    Цитата:
    У меня есть папка, и в ней лежат три папки с одинаковыми названиями файлов, которые в папках, но с разным размером, Как можно получить текстовой файл (таблицу с четырьмя колонками), где в первой колонке написано имя файла с расширением, а в трех остальных колонках размер файлов

     

    Код:
    @echo off
    for %%i in (.\dir1\*.*) do (
        call :print "%%~nxi" "dir1\%%~nxi" "dir2\%%~nxi" "dir3\%%~nxi"
    )
    goto :eof
    :print
    echo %1    %~z2    %~z3    %~z4
    exit /b
     

     
    Добавлено:
    ComradG

    Цитата:
    Это твое мнение

    Само собой.
     

    Цитата:
    :lol::lol::lol:

    Чем ржать, разобрал бы код сначала. :sad:

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 16:20 21-06-2010 | Исправлено: res2001, 16:20 21-06-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Ха! Понеслось заново: давайте обосрем скрипт ComradG, потому что он в них ничего не понимает, ровно как и в том, что я такой крутой и знаю по более его, а он такой кретин ничего толкового так и не написал.

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 16:30 21-06-2010
    wolf0425



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

    Цитата:
    У меня есть папка, и в ней лежат три папки с одинаковыми названиями файлов, которые в папках, но с разным размером, Как можно получить текстовой файл (таблицу с четырьмя колонками), где в первой колонке написано имя файла с расширением, а в трех остальных колонках размер файлов
    смотри код на предыдущей странице
    Цитата:
    а я могу вписать тогда пять файлов для сравнения, будет это работать?
    вписать ты можешь что угодно, а код сравнивает первые два файла.
     
    ComradG
    Цитата:
    Похоже вы либо шутите, либо издеваетесь - это похоже на толкотню воды в ступе.  
    нет, этот код как раз и обеспечивает защиту от  ввода неизвестного банику ключа - точнее делает очевидной реакцию батника на такой ключ.
    например твой первоначальный код на ключ /x - пытался паковать .cab
    мой вариант - на любой непонятный ключ печатает хэлп,  
    этот вариант - печатает что надо набрать чтобы прочитать хэлп.
     

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

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 16:34 21-06-2010 | Исправлено: wolf0425, 16:54 21-06-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    то что надо, спасибо, только один вопрос, а как передать эти значения в текстовой файл?

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

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 16:36 21-06-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    lorents
    echo %1    %~z2    %~z3    %~z4  >file.txt

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 16:36 21-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    Цитата:
    а как передать эти значения в текстовой файл?
    дописать 1>>file.txt в начало строки с echo

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 16:38 21-06-2010 | Исправлено: wolf0425, 16:45 21-06-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