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

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



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

    Код:
    for /f "delims=" %%i in ('dir /b /s /a-d Dir4\*.png') do (
        "%~dp0Docs\optipng.exe" -i0 -zw32k -zc9 -zm1-9 -zs0-3 -f0-5 -force "%%~fi" > %temp%\png.log
        copy /b /y "%%~fi" dir5
        for /f "delims==,IDAT tokens=5" %%i in (%temp%\png.log) do (
            set f=%%i
        )
        set f=%f:~1,1%
        del %temp%\png.log
        echo  %f%
        if %f% == 3 ("%~dp0Docs\pngout.exe" -ks -f5 "%%~fi")
        if %f% == 4 ("%~dp0Docs\pngout.exe" -ks -f5 "%%~fi") else ("%~dp0Docs\pngout.exe" -ks "%%~fi")
        "%~dp0Docs\deflopt.exe" "%%~fi"
    )

    Выдаете

    Цитата:
    Непредвиденное появление: (.


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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 09:21 27-08-2010 | Исправлено: lorents, 09:21 27-08-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents,  
        set f=%f:~1,1%
        del %temp%\png.log
        echo  %f%  
        if %f% == 3 (
    %f% на момент начала цикла не определен, получаем if == 3 (
    все сеты внутри цикла на подстановку  %переменных% внутри цикла - не влияют
     
    или выноси в call или  переходи на !переменные!

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 09:45 27-08-2010 | Исправлено: wolf0425, 09:47 27-08-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    а можно поподробнее, как через переменную?

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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 10:21 27-08-2010
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    SetLocal EnableDelayedExpansion
    For ...
    ...
    Rem А здесь вместо %Переменная% использовать !Переменная! (% заменить на !)
    ...
    EndLocal
     
    "EndLocal" не обязателен, действие "SetLocal" прекратится с окончанием батника.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 10:34 27-08-2010 | Исправлено: BVV63, 10:54 27-08-2010
    lorents



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

    Код:
    SetLocal EnableDelayedExpansion
    for /f "delims=" %%i in ('dir /b /s /a-d Dir4\*.png') do (
        "%~dp0Docs\optipng.exe" -i0 -zw32k -zc9 -zm1-9 -zs0-3 -f0-5 -force "%%~fi" > %temp%\png.log
        copy /b /y "%%~fi" dir5
        for /f "delims==,IDAT tokens=5" %%i in (%temp%\png.log) do (
            set f=%%i
        )
        set f=!f:~1,1!
        del %temp%\png.log
        if !f! == 3 ("%~dp0Docs\pngout.exe" -ks -f5 "%%~fi")
        if !f! == 4 ("%~dp0Docs\pngout.exe" -ks -f5 "%%~fi") else ("%~dp0Docs\pngout.exe" -ks "%%~fi")
        "%~dp0Docs\deflopt.exe" "%%~fi"
    )

     
    И еще один вопрос, как узнать сколько всего картинок в папке Dir4, и сколько уже обработал bat-файл?

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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 10:46 27-08-2010
    InSe0F



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    извиняюсь за тупой вопрос,
    Но как скопировать папку (содержащую файлы и поддиректории) на 4 флешки - сразу?
    ну т.е. копируем D:/1 в E:/1, F:/1, I:/1 и т.д
    Потыкался туда сюда - что то не получается через copy?

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 11:10 27-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    счетчиком
    InSe0F
    поочереди XCOPY

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 11:32 27-08-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    это я понимаю, но не знаю как это сделать. Можно поподробнее как это сделать?

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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 12:03 27-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    set /a COUNT=0
     
    ......
     
    set /a COUNT=%COUNT%+1
     
    ..........
     
    так приблизительно, если в синтаксисе не путаюсь
     
    Добавлено:

    Цитата:
     
    ECHO OFF
    COLOR 9F
    CLS
    SET /A COUNT=0
    SetLocal EnableDelayedExpansion
    FOR /R "." %%I IN (*.BAT) DO SET /A COUNT=!COUNT!+1
    ECHO %COUNT%
    pause
     

    я не уверен что это правельна но это работает. считает количество батников в папке
     
    Добавлено:
    пвключая подпапки

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 12:07 27-08-2010 | Исправлено: bomzzz, 12:15 27-08-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    InSe0F
    for %%i in (a b c d) do xcopy D:/1 %%i:/1 \I
    ОСТАЛЬНЫЕ КЛЮЧИ xcopy сам смотри

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:16 27-08-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    пробовал так, но все время COUNT=0

    Код:
    ECHO OFF
    COLOR 9F
    CLS
    SET /A COUNT=0
    SetLocal EnableDelayedExpansion
    for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
    SET /A COUNT=!COUNT!+1
    ECHO %COUNT%
    "%~dp0Docs\pngout.exe" -ks "%%~fi"
    )
    pause


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

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



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

    Цитата:
    ECHO OFF
    COLOR 9F
    CLS
    SET /A COUNT=0
    SetLocal EnableDelayedExpansion
    for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
    SET /A COUNT=!COUNT!+1
    ECHO !COUNT!
    "%~dp0Docs\pngout.exe" -ks "%%~fi"
    )
    pause  


    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 13:11 27-08-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SetLocal EnableDelayedExpansion
    set count=0
    for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
    SET /A COUNT=!COUNT!+1  
    ECHO %COUNT%  
    "%~dp0Docs\pngout.exe" -ks "%%~fi"  
    )  
    pause

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    точно через переменную надо, спасибо
    Теперь осталось узнать сколько всего картинок в папке Image
     
    us0r
    не работает, пишет, что 0

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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 13:23 27-08-2010 | Исправлено: lorents, 13:24 27-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    чтоб теле цикла менялась переменная надо ета SetLocal EnableDelayedExpansion, и восклицательные знаки.
     
    lorents
    если у них разные расширения у картинок, то тут можно вроде чрез запятую разные указать
    FOR /R "." %%I IN (*.BAT) DO SET /A COUNT=!COUNT!+1  
    посматри описнаие for

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 13:26 27-08-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    мне надо узнать, сколько всего картинок в папке Images изначально.
    а ты вроде говоришь сколько я уже обработал, или я чего не понял?
     
    еще раз спасибо за помощь

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

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



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FOR /R "." %%I IN (*.BAT) DO SET /A COUNT=!COUNT!+1 ну вот ета и считает сколько всего файлов определенного типа, а потом после каждой обработки увеличивай счетчик - разница сколько осталось

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 13:46 27-08-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Все разобрался.
    bomzzz спасибо

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

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 14:17 27-08-2010 | Исправлено: lorents, 14:26 27-08-2010
    InSe0F



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

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 19:23 27-08-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    Слушай, а можно с помощью FileResizerB.exe как нибудь изменить размер у "здорового" файла, чтобы изменилась его чексумма?

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 20:17 27-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