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

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

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите как в скрипте указать дату на 1 день назад.
    set Year=%date:~-4%
    set Month=%date:~-7,2%
    set Day=%date:~-10,2%
     
    echo %Year%-%Month%-%Day%
     
    надо копировать папки с другой машины, она создается в течении дня в формате YYYY-MM-DD, копировать ее можно лишь на следующий день.

    Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 19:43 26-01-2010
    king_stiven

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

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 20:09 26-01-2010
    digital422

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Смотрел, как много строчек для простой операции . Пошел по простому пути, скачал unxutil, а для него у меня скрипты уже есть, -d "1 day ago".

    Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 20:26 26-01-2010
    king_stiven

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

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 20:33 26-01-2010
    digital422

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    date.exe  
     
    #/bin/sh
    DATE=`date '+%d-%m-%Y_%H-%M-%S' -d "1 hour ago"`
     
    ну и дальше комманда+$DATE

    Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 20:38 26-01-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    digital422
    А для sed есть что нибудь?

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 20:55 26-01-2010
    Ykidia



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!
    Помогите, пожалуйста, решить такую задачу. Нужно, чтобы батник делал следующее (выполнение производится в среде Windows Server 2003):
    1) найти диск объемом не менее 1,5 Тбайт, иначе на выход с ошибкой;
    2) размонтировать все разделы этого диска и удалить их с диска - этот пункт уже сделан, но я написал его, чтобы было понятнее, к чему эти действия, к тому же, вдруг есть более правильный вариант;
    3) если занята буква E, размонтировать устройство с этой буквой и смонтировать на другую неиспользуемую;
    4) преобразовать найденный диск в GPT и создать на нем один раздел на весь объем диска, после чего присвоить разделу букву E - этот пункт также уже реализован, см. комментарии к п.2.
     
    Благодарен за любые мысли и помощь
     
    P.S. Что уже сделано, вдруг понадобится кому или мало ли ошибки есть

    Всего записей: 242 | Зарегистр. 03-03-2005 | Отправлено: 20:57 26-01-2010 | Исправлено: Ykidia, 21:02 26-01-2010
    digital422

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sed - в архиве тоже есть, надо смотреть в Linux скриптах, для него много примеров, в моей практике (в записях) есть вот такое, тоже взятое с этого форума:
     
    # удаление пропусков в именах файлов и директорий и подстановка  нижней черты ,,_,, в определенном каталоге
    for x in *; do mv "$x" `echo $x | sed -e 's/ /_/g'`; done
    for x in *; do mv "$x" ${x// /_}; done
     
    подозреваю что запускать надо через sh.exe.

    Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 21:07 26-01-2010
    Kirillhome



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ykidia
    Очень большая проблема в сравнивание размера (1,5ТБ - это ведь больше, чем 2 в 32????)
     
    получить список дисков и их размер - не сложно (подсмотрел здесь):

    Код:
     
    @echo off
    for /f "skip=1 tokens=1,2,*" %%i in ('wmic.exe logicaldisk get caption^,size') do (
       echo CurDrive: %%i  Size: %%j
       )
     

    А вот сравнить их в дальнейшем как??? Ведь максимум - 2 147 483 647 (т.е. 2Гб...)

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 22:08 26-01-2010
    Sereoga

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые специалисты!
    "Дико извиняюсь" за ламерский вопрос:
    как вызвать из cmd-файла bat-файл, так, чтобы он выполнился, и после его завершения управление передалось бы обратно в исходный cmd-файл?
     
    Написал:
    start "" /WAIT "%ProgramFiles%\TrueImageEcho\Reg.bat"
     
    все срабатывает, но после выполнения Reg.bat его окошко не закрывается, выводится приглашение на ввод команды, а мне надо, чтобы закрывалось.
    И еще, исправление желательно сделать в исходном cmd-файле, а не в Reg.bat (который не мой).

    Всего записей: 62 | Зарегистр. 20-12-2008 | Отправлено: 23:12 26-01-2010
    king_stiven

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

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 23:17 26-01-2010
    Sereoga

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

    Всего записей: 62 | Зарегистр. 20-12-2008 | Отправлено: 23:53 26-01-2010
    takt03

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет. У меня как всегда глупый вопрос. Вы будете смеятся но делать не чего:  
    короче пишу в бат
    @echo on
    reg add "HKLM\software\microsoft\Windows NT\CurrentVersion\winlogon\specialAccounts\userlist" /v so31aa /t REG_DWORD /d 00000000
    pause
     
    Запускаю и появляется следующее  
     
    pecialAccounts\userlist" /v so31aa /t REG_DWORD /d 00000000
     
    D:\111\tel>reg add "HKLM\software\microsoft\Windows NT\CurrentVersion\winlogon\s
    pecialAccounts\userlist" /v so31aa /t REG_DWORD /d 00000000
     
    D:\111\tel>reg add "HKLM\software\microsoft\Windows NT\CurrentVersion\winlogon\s
    pecialAccounts\userlist" /v so31aa /t REG_DWORD /d 00000000
     
    И так далее без остановки.....
    Если ручками в смд пишу то всё работает. Ещё раз извеняюсь за глупый вопрос но деваться не куда, в книге не чего об этом не нписанно  
     
    echo on
    cd\
    reg add "HKLM\software\microsoft\Windows NT\CurrentVersion\winlogon\specialAccounts\userlist" /v so31aa /t REG_DWORD /d 00000000
    exit
     
    Решил проблему сам. Но может кому пригодится при работе с реестром.

    Всего записей: 17 | Зарегистр. 16-01-2010 | Отправлено: 01:27 27-01-2010 | Исправлено: takt03, 01:52 27-01-2010
    drongo8

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
    Подскажите пожалуйста, как установить винду на нулёвый ноут?
    Нужноформатировать винчестер и разбить на диски!
    Как это зделать?

    Всего записей: 4 | Зарегистр. 27-01-2010 | Отправлено: 02:25 27-01-2010
    wolf0425



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

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 06:41 27-01-2010
    digital422

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, что не хватает для %DATA0% ? date.exe из комплекта UnxUtils.
     
    set DATE0="d:/bin/date.exe +%%Y-%%m-%%d"
     
    %DATE0% - # показывает дату 2010-01-26
     
    set IN=d:/data-in/%DATE0% - # тут вместо %DATA0% - d:/data-in/d:\bin\date.exe +%Y-%m-%d

    Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 07:30 27-01-2010
    native1

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

    Всего записей: 1 | Зарегистр. 27-01-2010 | Отправлено: 11:21 27-01-2010 | Исправлено: native1, 14:39 27-01-2010
    Kirillhome



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    native1
    См. в шапке - Администрирование, автоматизация и сеть - Пример выполнения команд по результату команды ping

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 11:56 27-01-2010
    Maikl_relax

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
    Подскажите как найти все папки "NAME2" в "F:\NAME1" и удалить вместе с содержимым "NAME2"?
    Либо адаптировать скриптик, котрый уже здесь был, но не работает.
     
    @Echo Off  
    CHCP 1251 > Nul  
     
    Set TmpPath=F:\NAME1
    Set InStrVar=NAME2
    Set FilesMask=*.*  
     
    For /R "%TmpPath%" %%i In (.) Do Call :CheckTemp "%%i"  
     
    :CheckTemp  
    Set CurrDir=%~1  
    Set CurrDir=%CurrDir:~0,-2%  
     
    For %%a In ("%CurrDir%") Do Set "DirName=%%~nxa"  
     
    For /F "delims=" %%b In ('Echo %DirName%^| Find /I "%InStrVar%"') Do Set "DelPath=%CurrDir%\%FilesMask%"  
     
    If /I Exist "%DelPath%" (  
        Del /Q /F "%DelPath%"  
        ) Else (  
        Exit /b 1  
        )
     
    То есть нужно рекурсивно пройтись начиная с некторой папки по ее содержимому и удалить папки, имя котрых соответсвует заданному шаблону.  
     
    PS в перменных окружения кавычки ставил, последнюю строку из батника убирал- не помогает.

    Всего записей: 8 | Зарегистр. 27-01-2010 | Отправлено: 16:20 27-01-2010
    den06051979



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста вот с такой ситуацией:
     
    Мне нужно из bat файла запустить exe файл и передать ему 3 параметра
    Тут запускается плеер и ему надо передать плейлист и 2 параметра его запуска.
    У меня получается только чтобы он подхватил плейлист, а надо чтобы и параметры /play /fullscreen подхватил тоже.
     
    start /B /NORMAL "C:\Program Files\SAM CoDeC Pack\Players\MPCHC\mpc-hc.exe" "D:\TV+\10.2009\10.2009_disk_D.m3u" /play /fullscreen
     
    Такая вот конструкция у меня не работает!

    Всего записей: 21 | Зарегистр. 21-12-2005 | Отправлено: 16:39 27-01-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