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

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

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

    Всего записей: 28 | Зарегистр. 31-08-2010 | Отправлено: 16:20 03-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    http://technet.microsoft.com/ru-ru/library/cc757491(WS.10).aspx
    вот тебе микрософт написькал как менять

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 16:22 03-09-2010
    PulsSe

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

    Цитата:
    http://technet.microsoft.com/ru-ru/library/cc757491(WS.10).aspx
    вот тебе микрософт написькал как менять

     
    спасибо, читал, проблему не решило

    Всего записей: 28 | Зарегистр. 31-08-2010 | Отправлено: 16:25 03-09-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 16:28 03-09-2010
    PulsSe

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят, Кто знает как автоматизировать процесс смены буквы флешки через diskmgmt.msc через батник?

    Всего записей: 28 | Зарегистр. 31-08-2010 | Отправлено: 16:30 03-09-2010 | Исправлено: PulsSe, 16:33 03-09-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 16:34 03-09-2010
    wolf0425



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

    Цитата:
    Ребят, Кто знает как автоматизировать процесс смены буквы флешки через diskmgmt.msc через батник?

    как через diskmgmt.msc - не знаю, а вообще вот такой батник, запущенный с флешки (с правами админа) - перемонтирует её на буковку k:

    Код:
    @echo off
    cd /d c:
    for /f "tokens=*" %%a in (' mountvol %~d0 /l ') do ( mountvol %~d0 /d & mountvol k: %%a & exit )
     

    запускать с системного диска  не рекомендуется  
    (проверять хватит ли там прав отмонтировать с: - мне как-то лень)

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:05 03-09-2010 | Исправлено: wolf0425, 17:08 03-09-2010
    PulsSe

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

    Цитата:
    Цитата:
    Ребят, Кто знает как автоматизировать процесс смены буквы флешки через diskmgmt.msc через батник?
     
    как через diskmgmt.msc - не знаю, а вообще вот такой батник, запущенный с флешки (с правами админа) - перемонтирует её на буковку k:
     
    Код:
    @echo off
    cd /d c:
    for /f "tokens=*" %%a in (' mountvol %~d0 /l ') do ( mountvol %~d0 /d & mountvol k: %%a & exit )
     
     
    запускать с системного диска  не рекомендуется  
    (проверять хватит ли там прав отмонтировать с: - мне как-то лень)

     
     
     
    СПАСИБО ДРУЖИЩЕ!!!!!!! КОРОТКО И ЯСНО!! Все работает, именно так как нужно!))
    Удачи тебе мэн)
     
    А еще можешь объянить что какая команда делает? оч хочется понять просто как работает)

    Всего записей: 28 | Зарегистр. 31-08-2010 | Отправлено: 17:16 03-09-2010 | Исправлено: PulsSe, 17:17 03-09-2010
    wolf0425



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

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

    Цитата:
    А еще можешь объянить что какая команда делает?

    %~d0 - заменяется препроцессором на букву диска, с которого запущен батник
     
    mountvol %~d0 /l  
    печатает VolumeName этого диска, for /f (' ') это перехватывает и засовывает в %%a
     
    mountvol %~d0 /d  
    размонтировать указанный диск (для этого нужно сначала текущей директорией с него уйти, чтоб освободился, этому служит cd /d c:)
     
    mountvol k: %%a
    смонтировать на букву к: тот диск, чей VolumeName перехвачен фором
     
    & exit
    выйти после этого, батника то по старому пути уже нет.
     
    еще раз напоминаю, что с mountvol нужно быть аккуратнее, отмонтировать ею раздел винчетера  - нефиг делать.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:18 03-09-2010 | Исправлено: wolf0425, 17:33 03-09-2010
    PulsSe

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

    Цитата:
    %~d0 - буква диска, с которого запущен батник
     mountvol %~d0 /l печатает VolumeName этого диска, фор соответственно это перехватывает и заворачивает в %%a
     
    mountvol %~d0 /d  
    размонтировать указанный диск (для этого нужно сначала текущей директорией с него уйти)
    mountvol k: %%a
    смонтировать на букву к: тот диск, чей VolumeName перехвачен фором
    & exit
    выйти после этого, батника то там уже нет.  

     
    Спасибо за пояснение) примерно понял что и как и почему у меня pause в конце текста не работает) слушай а можно еще один вопрос..
     
    вот произошла смена буквы диска, я собираюсь ее запихать в авторун (что бы когда запихал в др комп эту флеху, буква тут же сменилась) теоретически  тут возможны 2 варианта.. либо будет зацикливание(это при том условии что после смены буквы опять же произойдет запуск авторуна и опять смена буквы диска и т.д.) в это случае нужно сделать что то вроде проверки на то что стоит ли выполнять данный батник или не..
     
    а второе, вставил я флешку, буква сменилась, а автозапуск не произошел, в этом случае нужно сделать что бы файл  авторун опять запустился, и опять же проверка на то, нужно ли еще раз менять букву диска..
     
    просто у меня в авторане прописано несколько программ, которые запускаются после того, как вставил флэшку в комп..
    как то так..) спасибо)

    Всего записей: 28 | Зарегистр. 31-08-2010 | Отправлено: 17:33 03-09-2010 | Исправлено: PulsSe, 17:40 03-09-2010
    wolf0425



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

    Цитата:
    теоретически  тут возможны 2 варианта.. либо будет зацикливание
    держи, для варианта когда входных параметров у батника не бывает (например при автостарте)

    Код:
    @echo off
    cd /d c:
    if /i %~d0 neq k: if "%~1" equ "" for /f "tokens=*" %%a in (' mountvol %~d0 /l ') do ( mountvol %~d0 /d & mountvol k: %%a & "k:\%~nx0" . )
    cd /d %~d0
    echo running at %cd%

     
    Добавлено:

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

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:46 03-09-2010 | Исправлено: wolf0425, 17:50 03-09-2010
    PulsSe

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    спасибо тебе огромное!)) выручил оч)
     
    я знаю, просто так удобней будет и потом когда софт будет добавлятся, проблем с этим никаких не будет, тут получается один раз сделал и забыл)
     
    Добавлено:
    а еще я правильно отредактировал на другую букву?
     
    @echo off
    cd /d c:
    if /i %~d0 neq O: if "%~1" equ "" for /f "tokens=*" %%a in (' mountvol %~d0 /l ') do ( mountvol %~d0 /d & mountvol O: %%a & "O:\%~nx0" . )
    cd /d %~d0
    echo running at %cd%

    Всего записей: 28 | Зарегистр. 31-08-2010 | Отправлено: 17:50 03-09-2010 | Исправлено: PulsSe, 17:54 03-09-2010
    wolf0425



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

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

    Цитата:
    а еще я правильно отредактировал на другую букву?  
    вроде правильно

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:54 03-09-2010 | Исправлено: wolf0425, 18:00 03-09-2010
    PulsSe

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

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

     
    ну такие ситуации бывают не часто я полагаю.. ну и там можно уж поискать другие варианты)
     

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

     
    совершенно верно, портабл софт рулит) но все же есть проги, например 1С, у которой информационные базы привязаны по фиксированному пути( тут либо постоянно путь менять.. либо букву, либо отдельный батник еще писать... но если б только 1С была.. есть еще и др ннекоторый софт с такими же заморочками)
     
    благодарю еще раз)) очень помог)

    Всего записей: 28 | Зарегистр. 31-08-2010 | Отправлено: 18:00 03-09-2010
    wolf0425



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

    Цитата:
    совершенно верно, портабл софт рулит) но все же есть проги, например 1С, у которой информационные базы привязаны по фиксированному пути
    неа, не привязаны, там можно базу параметром при запуске указать, а не только в регистри прописывать.
    Кстати, и в регистри всё равно с какой буквой базу то прописывать - все равно запускающий батник пишет, ну будет чуть длиннеее.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:02 03-09-2010 | Исправлено: wolf0425, 18:03 03-09-2010
    PulsSe

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

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

    Всего записей: 28 | Зарегистр. 31-08-2010 | Отправлено: 18:07 03-09-2010
    JekaRus

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Никто не встречал скрипт запроса размера свободного места на дисках. Нужно чтоб проводился опрос компов по списку и в случае если места менее 1ГБ выполнялось действие. Например отправка письма на почту.

    Всего записей: 1046 | Зарегистр. 10-08-2005 | Отправлено: 18:18 03-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JekaRus
    или из dir-а вырежи или отседава
    fsutil volume diskfree C:
     
    Добавлено:
    for /f "tokens=6" %%I in ('fsutil volume diskfree C:') do echo %%I
     
    Добавлено:
    Неверное число. Числа ограничены 32 битами точности. - тут другой подводный камень будет
     
    Добавлено:
    в 32 бита влазит только 4 гига, но если откинуть три последние цифры перевести в тысячи байт, то хватит для домашних целей
     
    ECHO OFF
    COLOR 9F
    CLS
    for /f "tokens=6" %%I in ('fsutil volume diskfree C:') do set STRING=%%I
    echo %STRING%
    set /a STRING=%STRING:~0,-4%
    echo %STRING%
    pause
     
    Добавлено:
    ECHO OFF
    COLOR 9F
    CLS
     
    for /f "tokens=6" %%I in ('fsutil volume diskfree C:') do set STRING=%%I
    echo %STRING%
    set /a STRING=%STRING:~0,-4%
    echo %STRING%
    if %STRING% LSS 1024000 echo OK
     
    pause

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 18:41 03-09-2010 | Исправлено: bomzzz, 19:03 03-09-2010
    01MDM



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

    Код:
     
    @echo off
    setlocal
     
    for %%i in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (
        if exist %%i:\ call:getfreespace "%%i:"
    )
    goto:eof
     
    :getfreespace
    for /f "usebackq tokens=1,2 delims==" %%i in (`wmic volume where "DriveLetter='%~1'" get freespace /value`) do (
        if not "%%j"=="" set "%%i=%%j"
    )
    if %FreeSpace% leq 1073741824 echo %1
     

    C fsutil конечно попроще, но:

    Цитата:
     
     > fsutil volume diskfree C:
    Для работы с программой FSUTIL требуются права администратора.
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:13 03-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Неверное число. Числа ограничены 32 битами точности  - а как ты это обошел???

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:15 03-09-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