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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4

Модерирует : KLASS, IFkO

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах
(часть 1, часть 2, часть 3)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR
.
 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Делаем паузу в командном файле стандартными средствами Windows
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    lastduke

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    Большое спасибо, теперь работает. проблема была в кодировке (после копипаста с сайта).  
    перебил весь текст руками  - заработало.
     
    п.с. эхо офф как правило оставляю включенным для большей информативности.
     
     
     

    Всего записей: 4 | Зарегистр. 23-01-2008 | Отправлено: 21:10 23-01-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grim_Repo
     
    @echo off -чтобы ход выполнения батника не выводился на экран
     
    chcp 1251 > nul - бывает нужно, если в путях есть кириллица

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 21:47 23-01-2008
    Elroir



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

    Цитата:
    Подскажите, какой ip адрес лучше всего пинговать ну типа может мелкософта сервак или еще какой то наиболее подходящий для этих целей?

    www.google.com
     

    Цитата:
    Подскажите, а что дает параметр -c ?

    Если использовать еще и ключ -t, то на экране появится сообщение о том, что комп будет выключен/перезагружен через какое-то время и в этом сообщении будет поле для текста, который можно ввести после ключа -c.
     

    Цитата:
    вопрос - какой надо батник написать чтобы он удалял например файлы *.tmp и *.bak из папки XYZ


    Код:
     
    @for %%a in (tmp bak) do @del /q "XYZ\*.%%a"
     

     
    king_stiven
    Знаешь зачем на форуме есть тэг [b][/b]? - В том числе и для того, чтобы выделять обращения.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:01 23-01-2008
    king_stiven

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

    Цитата:
    Grim_Repo
    И последний вопрос - какой надо батник написать чтобы он удалял например файлы *.tmp и *.bak из папки XYZ.
     

     

    Код:
    for %%e in ("XYZ\*.tmp" "XYZ\*.bak") do del "%%e" /q

     
    где XYZ полный путь например D:\temp 3
     

    Цитата:
    -c "сообщение"  
    Задает сообщение, выводящееся в области «Сообщение» в окне «Завершение работы системы». Можно использовать до 127 знаков. Текст сообщения должен быть заключен в ПРЯМЫЕ кавычки.  

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 22:03 23-01-2008 | Исправлено: king_stiven, 22:20 23-01-2008
    PuzzleW

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grim_Repo
    Всё так  
    пинговать наврное все же правильнее всего localhost он же 127.0.0.1
     
    shutdown -f -c "the time is now"  
    выдает сообщение в квадратном окошке "the time is now"
    и перезагружает систему, попутно завершаю сопротивляющиеся задачи (-f)
     
    Добавлено:
    Grim_Repo
     
    по поводу шрифтов: может разумнее использовать copy *.ttf c:\windows\fonts ?
    и кстати лучше использовать не c:\windows\fonts, а %SYSTEMROOT%\Fonts
     
    (так обеспечиваеться переносимость и работоспособность твоего скрипта на системе с windows, установленной в папку d:\win например или c:\xp)

    Всего записей: 185 | Зарегистр. 19-12-2005 | Отправлено: 22:35 23-01-2008
    Grim_Repo



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2king_stiven
    А @echo off нужен для того чтобы не показывалось окно батника?
     
    А нужно ли использовать chcp 1251 > nul в данном батнике:
    Код:
    chcp 1251 > nul for %%e in ("C:\*.tmp" "D:\*.bak") do del "%%e" /q
    в случае если, например, на диске Д и\или С есть директории с русскими названиями в которых имеются *.tmp и *.bak файлы? И подскажите, этот батник будет удалять файлы *.tmp и *.bak лежащие в не только на диске С и\или Д но и лежащие в дерикториях и поддерикториях дисков С и Д?
     
    Скажите, а можно без абзацев написать такой батник:
    Код:
    @echo off chcp 1251 > nul for %%e in ("XYZ\*.tmp" "XYZ\*.bak") do del "%%e" /q
    ?
     
    2PuzzleW
    Цитата:
    выдает сообщение в квадратном окошке "the time is now"
    и перезагружает систему, попутно завершаю сопротивляющиеся задачи (-f)
    Тоесть не обязательно использовать -t для показа сообщения?

    Цитата:
    по поводу шрифтов: может разумнее использовать copy *.ttf c:\windows\fonts ?
    и кстати лучше использовать не c:\windows\fonts, а %SYSTEMROOT%\Fonts
    Что вы думаете на счет такого батника:
    Код:
    @echo off  
    chcp 1251 > nul
    copy Font1.ttf %SYSTEMROOT%\Fonts
    copy Font2.ttf %SYSTEMROOT%\Fonts

     
    P.S.
    Если есть @echo off то не нужно использовать exit /b
     
     
    Заранее, огромное спасибо!

    Всего записей: 397 | Зарегистр. 02-05-2006 | Отправлено: 23:01 23-01-2008 | Исправлено: Grim_Repo, 23:36 23-01-2008
    SymA



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

    Цитата:
    SymA  
    Для ярлыка лучше cmdow /run /hid some.cmd

     
    ничего не изменилось
     
     
    PuzzleW
     

    Цитата:
    SymA - когда у меня встала такая задача - я обошёлся следующим образом (про cmdow узнал только что из гугла)  
     
    ----------------file.vbs-----------  
    sPath = "D:\\Work"  
    sCmd = "subst W: " & sPath  
    Set WshShell = Wscript.CreateObject("WScript.Shell")  
    WshShell.Run sCmd, 0, true  
    --------------/file.vbs------------

     
    в vbs не силён
     
    если необходимо открыть "D:\Recover\", то как это будет выглядеть ?
     

    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 23:15 23-01-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SymA
    Ну да, при запуске через cmdow и если запускать не из консоли, окно на мгновение мигает.
    В шапке есть утилита hstart.exe. Я обычно пользуюсь ей, окно вообще не появляется.

    Код:
     
    hstart.exe /nowindow "some.cmd"
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 00:05 24-01-2008
    Dekabryi



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    PuzzleW
    все выключено !
     
    Есть др более гиморойный способ. Решить задачу.
    1) net view >>new_list.txt
    2)затем сравниваем два файла . я например через Excel  их сравнил.

    Всего записей: 44 | Зарегистр. 29-05-2006 | Отправлено: 05:49 24-01-2008
    PuzzleW

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Блин, длинный ответ написал - и crash
     
    Dekabryi
    а второй файл что содержит? эталонный список всех компьютеров? так этот метод не работает  
     
    SymA
    я тоже не силен  
     
    ты имеешь в виду открыть папку в Windows Explorer'e?
     
    Grim_Repo
    длинный ответ предназначался тебе, но, видимо, не судьба  
    будет он коротким
    на русской windows запускаешь cmd.exe  
    и пишешь
    echo /?
    for /?
    exit /?
    shutdown /?
    и читаешь
    конкретика
    -t для shutdown нужен иначе не успеешь ничего прочитать  
     

    Код:
     
    @echo off  
    chcp 1251 > nul  
    copy Font1.ttf %SYSTEMROOT%\Fonts  
    copy Font2.ttf %SYSTEMROOT%\Fonts  
     

    нормально в целом  
    хотя еслу тебя всего два файла можно сократить до

    Код:
     
    @copy *.ttf %SYSTEMROOT%\Fonts
     

    я так понимаю русских имен шрифтоов у тебя все равно нет, и предполагаю что винда стоит тоже в английской директории)
    ну и все шрифты что рядом с твоим батником - они нужны в папке Fonts

    Всего записей: 185 | Зарегистр. 19-12-2005 | Отправлено: 11:55 24-01-2008
    Dekabryi



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    PuzzleW
    первый фал мы выгружаем при помощи net view >> lan_list.txt
    второй со списком компов уже есть !  и в екселе мутем формули по подбору !

    Всего записей: 44 | Зарегистр. 29-05-2006 | Отправлено: 12:56 24-01-2008
    king_stiven

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

    Цитата:
    Grim_Repo
     

     
    1 нет
    2 нужно, хуже всегда не будет
    3 см. справку по команде del
    4 нельзя

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 13:06 24-01-2008
    PuzzleW

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dekabryi
    я тебя совсем не понял  
    напиши нормально свою задачу
    или я что-то пропустил?

    Всего записей: 185 | Зарегистр. 19-12-2005 | Отправлено: 14:27 24-01-2008
    Grim_Repo



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

    Код:
    @copy *.ttf %SYSTEMROOT%\Fonts
    - а для чего @ перед copy?

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

    Цитата:
    я так понимаю русских имен шрифтоов у тебя все равно нет, и предполагаю что винда стоит тоже в английской директории
    - этот батник делается для чужих людей, поэтому, я хэ в какой папке у них стоит винда...
    Зацените!
    Вот, думаю это должно сработать:
    Код:
    @echo off
    chcp 1251 > nul
    @copy *.ttf %SYSTEMROOT%\Fonts

    И вот еще один батник для выключения:
    Код:
    shutdown -f -s

    Это для перезагрузки:
    Код:
    shutdown -f -r

     
    P.S.
    Скажите, а батник выключения или перезагрузки с exit /bне сработает:
    Код:
    shutdown -f -s exit /b

    Код:
    shutdown -f -s exit /b
    ?
     
    Кстати exit /b должен не должен быть на одной строке с командой? Тоесть нужно ставить абзац:
    Код:
    shutdown -f -s  
    exit /b
    ?
     
    Насколько я понял @echo off нужен для того чтоб не показывался ход выполнения команды, верно?
     
    Я ни как не пойму что нужно для того чтобы не показывалось окно батника...

    Всего записей: 397 | Зарегистр. 02-05-2006 | Отправлено: 17:23 24-01-2008 | Исправлено: Grim_Repo, 17:29 24-01-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grim_Repo
    Ты можешь объяснить что тебе надо в результате? Если ты решил сам составить файл, то почему не почитать документацию? Загляни в %windir%\help и открой справочник по командам ntcmds.chm.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:26 24-01-2008
    Grim_Repo



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    201MDM
    Цитата:
    Загляни в %windir%\help и открой справочник по командам ntcmds.chm
    Каталог \help я снес еще при установке винды...

    Цитата:
    Ты можешь объяснить что тебе надо в результате?

    1. Нужно скопировать шрифты в папку Fonts при этом не должно быть видно окно батника, и при этом нужно чтобы батник по завершении операции закрылся.
     
    2. Требуется батник перезагружающий комп принудительно закрыв все программы, при этом не показывающий своего окна, и закрывающийся по завершении операции.
     
    3. Требуется батник выключающий комп принудительно закрыв все программы, при этом не показывающий своего окна, и закрывающийся по завершении операции.
     
    На этом все.

    Всего записей: 397 | Зарегистр. 02-05-2006 | Отправлено: 20:27 24-01-2008 | Исправлено: Grim_Repo, 20:29 24-01-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grim_Repo
    1,2,3 Пункты: штатной возможности скрыть окно нет. Можно использовать либо vbs, либо какую-нибудь стороннюю утилиту. В шапке есть ссылка на hstart.exe. Ee синтаксис:

    Код:
     
    hstart /nowindow "your.cmd"
     

     
    Про копирование шрифтов

    Код:
     
    @echo off
    copy *.ttf %windir%\fonts
    :: Копирует все *.ttf из папки где лежит батник в папку Fonts
    :: Если надо по-отдельности то вместо *.ttf используй filename.ttf, для каждого новая команда
    :: Если надо перезаписать файлы в конечной папке то copy с ключом /y
     

     
    Выключение

    Код:
     
    @echo off
    shutdown /s /t 0 /f - Выключает компьютер
    shutdown /r /t 0 /f - Перезагружает
     

     
    Если убил папку Help используй встроенную команду help или ключ /? для отдельно взятой команды.
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:21 24-01-2008
    Grim_Repo



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    201MDM
    У меня возникли некоторые вопросы:
     
    1. Так как это будет делаться на чужом компе все таки для перестраховки надо добавить chcp 1251 > nul
    Код:
    @echo off
    chcp 1251 > nul
    copy /y *.ttf %windir%\fonts
     
     
    2. Подскажите, а обязательно для shutdown использовать /t 0?
     
     
    P.S.
    А все эти батники после завершения операции закроются?

    Всего записей: 397 | Зарегистр. 02-05-2006 | Отправлено: 21:58 24-01-2008 | Исправлено: Grim_Repo, 22:01 24-01-2008
    01MDM



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

    Цитата:
    А все эти батники после завершения операции закроются?

    Да.
     

    Цитата:
    Подскажите, а обязательно для shutdown использовать /t 0

    /t 0 указывает на время через которое выключится\перезагрузится компьютер. Если не указывать, то он выключится через 30 сек (по умолчанию)  

    Цитата:
    Так как это будет делаться на чужом компе все таки для перестраховки надо добавить chcp 1251 > nul
     

    Я думаю, что не обязательно.
     
     
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:14 24-01-2008
    Grim_Repo



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    201MDM
    Подскажите, а если например файл *.zzz используется какой либо программой то этот батник:
    Код:
    @echo off
    chcp 1251 > nul
    for %%e in ("XYZ\*.zzz" "XYZ\*.zzz") do del "%%e" /q
    выдаст еррор и процесс удаления прекратится, или же продолжит работать и удалит оставшиеся файлы?
     
    Тот же вопрос касается этого батника:
    Код:
    @echo off
    chcp 1251 > nul
    copy /y *.ttf %windir%\fonts
    в случае если перезаписываемый шрифт уже используется какой либо программой то батник выдаст еррор и закроется, или же продолжит работать и скопирует оставшиеся шрифты?

    Всего записей: 397 | Зарегистр. 02-05-2006 | Отправлено: 22:36 24-01-2008 | Исправлено: Grim_Repo, 22:44 24-01-2008
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru