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

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



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Будем считать, что путь к аккаунтам пользователей стандартный: "c:\documents and settings", если нет, то измени путь на нужный тебе. Архивы создаются в директории откуда был запущен батник. Используется консольная версия архиватора 7zip, скопируй её в папку Windows.

    Код:
     
    @echo off
    for /f "delims=" %%a in (
       'dir "c:\documents and settings" /b /s /a:d ^| find /v /i "\Default" ^| findstr "документы$"') do (
           for /f "delims=\ tokens=3" %%b in ("%%a") do 7z.exe a -t7z "%%~nxb".7z "%%a"
     )
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 12:52 10-11-2007
    Elroir



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

    Цитата:
    А можно так учесть несколько символов?

    Так - нельзя.
    Можно по отдельности:

    Код:
     
    set d=%date:/=.%
    set d=%d::=.%
     

     
    Smitis
    Меня тоже достали уже вопросы по дате. Я в последнее время на них почти не отвечаю


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 12:53 10-11-2007
    Maza Faka



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

    Цитата:
    А можно так учесть несколько символов?

    Попробуй мой код.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 12:56 10-11-2007
    Cyril Konst



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    Спасибо. А вот ещё задача: Скопировать учётки с одного компа на другой и перенести пользовательские файлы (это вы уже показали).

    Всего записей: 634 | Зарегистр. 12-08-2003 | Отправлено: 14:02 10-11-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Cyril Konst
    Просто скопировать учётки вместе с данными на другой компьютер? Нужно немного изменить код:

    Код:
     
    @echo off
    for /f "delims=" %%a in (
       'dir "c:\documents and settings" /b /s /a:d ^| find /v /i "\Default" ^| findstr "документы$"') do (
           for /f "delims=\ tokens=3" %%b in ("%%a") do xcopy "%%a" "\\comp1\c\accounts\%%b" /i /e /k /r /h
     )
     

    Или ты что-то другое имел в виду?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 15:22 10-11-2007
    Cyril Konst



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    Я имел ввиду перенос локальных логинов и паролей прежде всего.
    Новый сервак покупаем. И нужно перенести аккаунты пользователей и их файлы.

    Всего записей: 634 | Зарегистр. 12-08-2003 | Отправлено: 15:26 10-11-2007 | Исправлено: Cyril Konst, 15:27 10-11-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Cyril Konst
    В этом я тебе не помощник, тебе сюда http://forum.ru-board.com/forum.cgi?forum=8

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 17:27 10-11-2007
    Cyril Konst



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    Тогда подскажи такую вещь:
    Есть файлик с логинами и паролями.
    Как с помошью bat-файла сделать цикл из команд вида:
    net user %login% %password% /add
    чтобы переменные брались из файлика.

    Всего записей: 634 | Зарегистр. 12-08-2003 | Отправлено: 18:41 10-11-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Cyril Konst
    Идея не слишком хорошая для коммандного файла..
     
    Будет работать если нет пробелов в имени пользователя или в его пароле, в чем я сомневаюсь.

    Код:
     
    @echo off
    for /f "tokens=1,2" %%i in (users.txt) do (
        net user %%i %%j /add
    )
     

     
    Структура users.txt:
    login1 password1
    login2 password2
    ...
    loginN passwordN

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:23 10-11-2007 | Исправлено: 01MDM, 19:33 10-11-2007
    19w85



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    у меня динамический IP меняется всего в трех диапазонах:
    AAA.AA.0.0 - AAA.AA.255.255
    BBB.BB.0.0 - BBB.BB.255.255
    CCC.CC.0.0 - CCC.CC.255.255
     
    Есть вопрос:
    Как с помощью pip.exe сделать проверку IP и чтобы при попадании в первый диапазон сразу происходил реконнект?
     
    Собственно, сейчас у меня так (т.е. проверка происходит только на то что IP вообще поменялся):
    @echo off
    for /F "delims=<>" %%A in ('pip.exe') do set OldIP=%%A
    :_Disconnect (подчеркивания, конечно, нет)
    nircmdc.exe rashangup "Avangard DSL Connection"
    nircmdc.exe wait 1000
    :Connect
    nircmdc.exe rasdial "Avangard DSL Connection" "" "ptn" "ptn"
    rasdial.exe | find.exe /i "Avangard DSL Connection"
    if %errorlevel%==1 (nircmdc.exe wait 1000 & goto Connect)
    for /F "delims=<>" %%B in ('pip.exe') do set NewIP=%%B
    if %OldIP%==%NewIP% goto Disconnect
     

    Всего записей: 623 | Зарегистр. 20-12-2005 | Отправлено: 00:15 11-11-2007 | Исправлено: 19w85, 00:20 11-11-2007
    Valdon



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Блин, чет затупил однако.... Как добавить с помощью echo пустую строку в файл ?

    Всего записей: 428 | Зарегистр. 25-07-2005 | Отправлено: 00:17 11-11-2007
    Elroir



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

    Код:
     
    echo.>>file
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:22 11-11-2007
    01MDM



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 00:25 11-11-2007 | Исправлено: 01MDM, 00:26 11-11-2007
    Valdon



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот спасибо, я так и думал, но у меня случайно пробел затесался между echo и точкой

    Всего записей: 428 | Зарегистр. 25-07-2005 | Отправлено: 00:31 11-11-2007
    Tipulatoid



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

    Цитата:
    Как с помощью pip.exe сделать проверку IP и чтобы при попадании в первый диапазон сразу происходил реконнект?

    Pip.exe у меня Касперский не дал скачать (говорит, троян в ней) - поэтому без нее

    Код:
    @echo off
    setlocal
    :: Установка переменых
    set "connection_name=Avangard DSL Connection"
    set "connection_login=LOGIN"
    set "connection_password=PASSWORD"
     
    :: Проверка существования соединения
    :check_inet
    rasdial | find "%connection_name%" && (goto check_ip) || (goto connect)
     
    :: Проверка IP
    :check_ip
    for /f "tokens=1* delims=:. " %%a in ('ipconfig ^| find "IP"') do set "cur_address=%%b"
    for /f "tokens=1-2 delims=."  %%a in ('echo %cur_address%') do (
       if /i %%a.%%b==AAA.AA (
          goto disconnect
       ) else (
          goto ok
       )
    )
     
    :: Отключение
    :disconnect
    rasdial "%connection_name%" /DISCONNECT
    ping -n 3 -w 1000 localhost>nul
    goto connect
     
    :: Соединение
    :connect
    rasdial "%connection_name%" %connection_login% %connection_password%
    rasdial | find /i "%connection_name%"
    if %errorlevel%==1 (
       ping -n 3 -w 1000 localhost>nul
       goto connect
    )
    goto check_ip
     
    :: Все хорошо
    :ok
    echo IP адрес - %cur_address%

    Твои условия я не смог воспроизвести на своей машине - поэтому батник не тестировался. Но должен работать, вроде. Если что, пиши.

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 05:16 11-11-2007 | Исправлено: Tipulatoid, 15:41 11-11-2007
    19w85



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

    Всего записей: 623 | Зарегистр. 20-12-2005 | Отправлено: 10:25 11-11-2007
    Tipulatoid



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

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 15:40 11-11-2007
    Valdon



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, подскажите плиз, простейший вариант создания файла-пустышки из bat'ника (0 байт) ?

    Всего записей: 428 | Зарегистр. 25-07-2005 | Отправлено: 17:58 11-11-2007
    Elroir



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

    Код:
     
    set /p=<nul>empty.txt
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:13 11-11-2007
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    По пути "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Connections\Pbk" лежит файл rasphone.pbk В нем информация о всех существующих подключениях в системе. Названия подключений заключены в квадратные скобки [] Если открыть файл в Блокноте, они прекрасно читаются. В консоли же, если подключение названо кириллическими буквами, выводятся крякозябры. Уже вроде все перепробовал - выводил cmd /a /c more rasphone.pbk | find "[", и по-другому - не могу добиться читаемого вывода в 1251. Решение не подскажете?

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 18:50 11-11-2007 | Исправлено: Tipulatoid, 19:05 11-11-2007
       

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