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

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



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

    Код:
    for /R "c:\windows\inf\" %%a in (oem*.inf) do dpinst.exe /U "%%a" /S /D  

    тут утилитка dpinst циклом удаляет драйвера через oem*.inf, но мне нужно не все подряд перебором удалять, а некоторые оставить

    Всего записей: 3275 | Зарегистр. 14-09-2005 | Отправлено: 14:35 12-06-2010
    ComradG



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

    Цитата:
    res2001

    Не, touch я уже на сях себе навалял и без сорсфорджевского проекта. Я говорил про возможность менять метку силами самой системы.

    Цитата:
    wolf0425

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

    Код:
     
    @echo off
    setlocal
    set BackUp="%userprofile%\_RЁ ¤RЄг&#9488;_-вл\%time:~0,2%%time:~3,2%%time:~-5,2%.reg"
    set IsExistKey=reg query hkcu\software\MyKey
    2>nul %IsExistKey% >nul
    if %errorlevel%==1 (
     echo Key does not exist.
     goto:eof
    ) else (
     goto:action
    )
    :action
    set /p ChooseAct="Delete key permanently? [y/n] "
    if /i %ChooseAct%==y (
     1>nul reg delete hkcu\software\MyKey /f >nul
     goto:eof
    ) else if /i %ChooseAct%==n (
     1>nul reg export hkcu\software\MyKey %BackUp% >nul
     1>nul reg delete hkcu\software\MyKey /f >nul
     goto:eof
    )
    endlocal
    exit /b

    Вот пример. И... кто-нибудь дайте знать, если у вас действительно не работают конструкции с findstr, вроде

    Код:
    reg add hkcu\software\MyApp | findstr /i done

    Просто лично у меня на серваке все прекрасно работает и сообщение об успешной операции не выводится (как и задумано).

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 14:39 12-06-2010
    mugil_cephalus

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

    Код:
    for /R "c:\windows\inf\" %%a in (oem*.inf) do if /i "_%%~nxa" geq "_oem21.inf" if /i "_%%~nxa" leq "_oem140.inf" dpinst.exe /U "%%a" /S /D

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:47 12-06-2010
    obla4ko4240019



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    ага, практически то, только наоборот) нужно указывать те файлы, которые не будут удаляться. А в данном случае удаляются указанные файлы

    Всего записей: 3275 | Зарегистр. 14-09-2005 | Отправлено: 15:23 12-06-2010
    Mark_Titov



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

    Код:
    Echo >> C:\AN-80\%mes%\log.txt

    - он создает в C:\AN-80, а в текущем месяце не хочет.
    Получается просто переменные не понимает...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 15:31 12-06-2010
    res2001



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

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



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

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

    Почитай про команду set.

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



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

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 15:55 12-06-2010
    Mark_Titov



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

    Цитата:
    видимо %mes% не определена

    ...да, спасибо, уже догнал )) Исправил.
    Благодарю...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 15:55 12-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    Цитата:
    reg add hkcu\software\MyApp | findstr /i done
    Просто лично у меня на серваке все прекрасно работает и сообщение об успешной операции не выводится (как и задумано).
    ну так и  
    reg add hkcu\software\MyApp 1>nul  
    работает ещё лучше, смысл огород городить с поиском?

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



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

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



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

    Цитата:
    reg add hkcu\software\MyApp 1>nul  

    Знаю, знаю. Но помнится жаловались тут, что 1>nul не пашет (разве бывает такоге? Лично за мою многолетнюю практику такого не было).
    А на счет временных штампов средствами системы имеются?

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



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ...еще вопрос такой как определить переменную времени %time%?
     
    set %time%= ???
     
    А то я пишу ему -

    Код:
    текст %time% текст

    - а он мне пишет прямо все подробности во времени которые мне не нужны - 17:19:08,15
    Мне нужно просто 17:19:08 до запятой...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 16:19 12-06-2010 | Исправлено: Mark_Titov, 16:20 12-06-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mark_Titov
    set now=%time:~0,2%:%time:~3,2%:%time:~-5,2%
     
    Добавлено:
    При использовании переменной now в дальнейшем:
    echo %now%
    выведет время в формате HH:MM:SS
     
    Добавлено:
    Если хочешь переопределить переменную time, то нужно сделать так:

    Код:
    set time=%time:~0,2%:%time:~3,2%:%time:~-5,2%

    Далее:

    Код:
    echo %time%

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



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

    Цитата:
    Знаю, знаю. Но помнится жаловались тут, что 1>nul не пашет (разве бывает такоге?  
    конечно, бывает что он вполне исправно пашет - но толку от этого никакого.
    там и пример был, где ты начал | findstr советовать.
    И | findstr /i done  в том примере не спасает ровно по тем же причинам, что и 1>nul
     

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

    Цитата:
    и еще как можно сделать чтобы копировались только определенные форматы файлов
    copy *.txt c:\folder\

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lol
    Цитата:
    И | findstr /i done  в том примере не пашет ровно по тем же причинам, что и 1>nul

    Перечитал пост, понял что к чему, прошу прощения.

    Цитата:
    а что ты под ними понимаешь?

    Аналогичный вопрос я бы мог задать и тебе, но ладно, коль просишь, поясню: штамп создания файла и его модификации. В PowerShell'е я уже раскурил что к чему, хотелось бы попробовать то же сделать в cmd.exe. На крайний случай тему разбираю и в vbs виде.

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



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

    Цитата:
    Аналогичный вопрос я бы мог задать и тебе
    да я под этим ничего не понимаю.

    Цитата:
    поясню: штамп создания файла и его модификации.
    что такое штамп?
    время модификации файла?
    call /? до конца дочитал? или for /?
    если надо время создания/обращения - то можно dir пропарсить
     
     

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



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

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

    понятно, спасибо.
    а можно пример, но чтобы работало с файлами включая те, которые в папках и подпапках, и чтобы обрабатывались только файлы *.png, *.jpeg, *.jpg. Т.е надо получить список этих файлов с путями
    Буду очень признателен

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



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

    Цитата:
    если надо время создания/обращения - то можно dir пропарсить

    Похоже вы, батенька, дислексией страдаете или просто за дегенерата принимаете меня. Временные штампы - время создания, модификации и последнего обращения к файлу. И речь не идет об их парсинге, а об изменении. Теперь понятно? Речь не идет о call или for и уж тем более о dir.
    P.S. Если я кого-то раздражаю, то пожалуйста, можете не помогать. А мои советы все равно, как писалось в одном из постов, бесполезны.

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 16:56 12-06-2010 | Исправлено: ComradG, 16:58 12-06-2010
    Mark_Titov



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

    Цитата:
    set time=%time:~0,2%:%time:~3,2%:%time:~-5,2%

    ...Супер! Спасибо.

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 16:57 12-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