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

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



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

    Код:
    @echo off
    set serv_list=ya.ru rambler.ru
    for %%a in (%serv_list%) do (
    set
    list=%%a
    for
    /f "tokens=8" %%b in ('tracert %%a') do set "serv=%%b"
    call:t
    for
    /f "tokens=8 delims== " %%d in ('ping %%serv%%^|findstr TTL') do echo %%d>>log.txt)
    goto:eof
    :t
    set
    "serv=%serv:[=%"
    set "serv=%serv:]=%"
    echo %date% %time:~0,-3% %list%>>
    log.txt
     

    наваял тебе в качестве примера, дальше дорабатывай команды и вывод сам
    жирным красным выделен список твоих серверов, изменяй (дополняй) его под свои нужды

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 23:48 05-03-2008
    ru1956

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

    Цитата:
    наваял тебе в качестве примера, дальше дорабатывай команды и вывод сам

    Скажите, Уважаемый, в какой кодировке сохранять этот файл, скопировав его с данной страницы?
    И вообще, как определить в какой кодировке написан файл и в какой его сохранять.

    Всего записей: 589 | Зарегистр. 15-05-2006 | Отправлено: 00:17 06-03-2008 | Исправлено: ru1956, 10:16 06-03-2008
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ru1956
    Сохранять в кодировке 866 (OEM)
    Хотя тут нет русских букв - поэтому можно и в 1251 (ANSI)

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:00 06-03-2008
    ru1956

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

    Цитата:
    Хотя тут нет русских букв - поэтому можно и в 1251 (ANSI)

    Однако, как же определить в какой кодировке написан файл?
    Ну, сохранять, скорее всего нужно в той кодировке, в которой он написан?

    Всего записей: 589 | Зарегистр. 15-05-2006 | Отправлено: 13:41 06-03-2008 | Исправлено: ru1956, 13:43 06-03-2008
    3y6acTuK

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите плиз написать батфайлик (споткнулся на некоторых моментах):
     
    1) Как узнать директорию, из которой вызывается bat (сам bat в другом каталоге)
    2) Как вставить пустую строку в текстовый файл (echo или др. команда это может? не хотелось бы усложнять)
    3) Как заменить в текстовом файле одну подстроку на другую? Или удалить подстроку?
    4) Как увеличить счетчик в имени файла, чтобы имя было уникально и не повторяло уже имеющиеся (тоже с цифрами в конце)
     
     

    Всего записей: 385 | Зарегистр. 23-07-2007 | Отправлено: 14:39 06-03-2008
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста, что выдает echo %CMDEXTVERSION% в Vista? А то ни одной Vist-ы вокруг нету...

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 14:59 06-03-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ru1956
    в данном случае (отсутствие кирилических символов на входе команд) код можно сохранять в любой кодировке, однако, вывод в файл отчёта будет в кодировке 866 (особенности команды ping)
    на мой взгляд, идеальный редактор для автоопределения кодировки файла Akelpad
    прекрасно работает в том числе и с кодировкой 866 (DOS)
    хотя для подстветки синтаксиса, имхо Akelpad3 слабоват будет

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 15:03 06-03-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    3y6acTuK
     
    1. команда cd или echo %cd%
    2. echo.> или >>1.txt
    3. цикл for или утилиты gsar, sed, awk, replacer...
    4. добавляй к названию дату+время, например:

    Код:
     
    @echo off
    set postname=%date:.=%%time::=%
    set postname=%postname:,=%
    cd.>NewFile%postname%.txt
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:15 06-03-2008
    TKVzic



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

    Всего записей: 2 | Зарегистр. 07-11-2007 | Отправлено: 16:42 06-03-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    На Vista Ultimate выдает число 2.
     
    TKVzic
    Ярлык можно создать только с помощью сторонних утилит, вроде nircmd (ссылка есть в шапке).

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:24 06-03-2008
    bobojon



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ПОМОГИТЕ новичку:У меня одна программка должна работать постоянно!!! - но иногда она сама по себе вырубается. Вот хотелось узнать можно ли  сделать так (с помощью батника) что бы она сразу же запускалась? Заранее благодарю.

    Всего записей: 53 | Зарегистр. 06-03-2008 | Отправлено: 18:15 06-03-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    3y6acTuK
    1. echo %%~dp0

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 18:20 06-03-2008
    3y6acTuK

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

    Цитата:
     
    Цитата:
     4) Как увеличить счетчик в имени файла, чтобы имя было уникально и не повторяло уже имеющиеся (тоже с цифрами в конце)  

     4. добавляй к названию дату+время, например

    Не подходит - нужно число в формате 000 - 0XX
    То есть последовательная нумерация, в таком виде:
    имя001.ext
    имя002.ext
    ....
    имя235.ext
    ....
    И чтобы автоматически определялась наибольшая цифра в именах файлов текущего каталога (могут быть пропуски) и увеличивалась на 1.  
     
    Добавлено:
    king_stiven
     
    Ну и что должно делать echo %%~dp0 ?
    Из ком.строки оно пишет "%%~dp0", а из bat-файла пишет "%~dp0"
    Не понял.

    Всего записей: 385 | Зарегистр. 23-07-2007 | Отправлено: 18:23 06-03-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    да, в принципе, можно обойтись и стандартными средствами, а именно, написать гибридный (cmd+cscript) сценарий или чисто скрипт
    TKVzic
    для доступа к объектам юзай утилиту cacls/?
    лично мне задача не интересна, поэтому писать лень, но может найдутся другие...
    а вот и пример скрипта для создания ярлыка к файлу пожаловал
    1.vbs
    Код:
    Set WshShell=CreateObject("WScript.Shell")
    Set
    WshShortcut=WshShell.CreateShortcut("C:\Notepad.lnk")
    WshShortcut.Arguments="C:\autoexec.bat"
    WshShortcut.Description="Пробный ярлык"
    WshShortcut.HotKey="CTRL+ALT+F"
    WshShortcut.IconLocation="shell32.dll,5"
    WshShortcut.TargetPath="notepad.exe"
    WshShortcut.WindowStyle=1
    WshShortcut.WorkingDirectory="C:\"
    MsgBox WshShortcut.FullName
    WshShortcut.Save
     
    дорабатывай
     
    Добавлено:
    bobojon

    Код:
    tasklist|findstr proga.exe||start "" "path\proga.exe"
    закидывай код в цикл с необходимой паузой или юзай планировщик с необходимым интервалом запуска кода

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 18:29 06-03-2008
    3y6acTuK

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    5) Как очистить дерево каталогов от файлов (удалить все файлы, оставив каталоги)?
    6) что значит и что делает конкретно точка после команд (например echo. или cd.) ?

    Всего записей: 385 | Зарегистр. 23-07-2007 | Отправлено: 19:13 06-03-2008
    bobojon



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Напишите мне пожалуйста,а то я у вас новичок. надо чтобы запускалась с этой директории D:\SOFITCOM\Router\router.exe  . Спасибо  

    Всего записей: 53 | Зарегистр. 06-03-2008 | Отправлено: 19:17 06-03-2008
    01MDM



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

    Цитата:
    То есть последовательная нумерация, в таком виде:
    имя001.ext
    имя002.ext
    ....
    имя235.ext
     

     
    Все зависит от контекста самого батника. Пока вот такой общий пример

    Код:
     
    @echo off
     
    set cnt=1
    for /f %%i in ('dir /b file*.txt') do set /a cnt+=1
     
    set cnt=00%cnt%
    cd.>"file%cnt:~-3%.txt"
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:24 06-03-2008
    3y6acTuK

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    О, тогда чтобы начинать с наибольшего номера (ведь могут быть пропуски в номерах файлов), тогда ставим cnt=999 и уменьшаем cnt-=1
    Сейчас попробую

    Всего записей: 385 | Зарегистр. 23-07-2007 | Отправлено: 19:47 06-03-2008
    bobojon



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    МОжет я не првильно задал вопрос? Сори..! Так вот как я упоминал выше моя программка (D:\SOFITCOM\Router\router.exe) должна работать постояно. я буду благодарен если вы мне поможете написать батник который бы следил за ним каждые 5 мин.  и в случае отключения сразу же запускал его! Если конечно это возможно.

    Всего записей: 53 | Зарегистр. 06-03-2008 | Отправлено: 19:52 06-03-2008
    3y6acTuK

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нет, не получится как я хотел - нужно удостовериться, что файл не существует... а FOR может кажется только проверять существование элемента в списке...

    Всего записей: 385 | Зарегистр. 23-07-2007 | Отправлено: 20:25 06-03-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