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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    Maza_Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    jonnydram
    Смотрите описание команды Net User /?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 09:46 03-06-2009
    ipmanyak



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smart_Chameleon Попробуй команду forfiles, в XP ее нет, но ее можно взять из W2K3  
    forfiles /?  
    Пример  удаления файлов в каталоге и подкаталогах, не удаляя сами подкаталоги :
    forfiles /P "D:\TEMP" /M *.* /S  /C "cmd /c del /Q /F @PATH"

    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11976 | Зарегистр. 10-12-2003 | Отправлено: 10:45 03-06-2009
    vitaliy91

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожлуйста как присвоить переменной 2 символа первой строки определенного положения из файла ?
     
    например файл содержит следующую строку (это HEX адресс и значение первого столбца):

    Цитата:
     
    0046D03C 01    
     

     
    Мне надо получить значение 01
     
    Уже разобрался

    Цитата:
     
    for /F "delims=" %%i in (dump.txt) do set var=%%i
    set "var=%var:~9,-3%"
     

     
    И такой вопрос: чем отличается одна разделяющая черта от двойной т.е | от ||

    Всего записей: 37 | Зарегистр. 16-11-2008 | Отправлено: 16:31 03-06-2009 | Исправлено: vitaliy91, 18:10 03-06-2009
    HaK1R



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

    Код:
    for /F "tokens=2" %%i in (dump.txt) do set var=%%i

     
     
    Добавлено:
    vitaliy91
    посмотри здесь, похоже
    http://forum.ru-board.com/topic.cgi?forum=62&topic=9040&start=201&limit=1
     
    Добавлено:
    Smart_Chameleon
    лучше так(есть в стандартном наборе)

    Код:
    @echo off
    pushd "C:\DOC\"
    for /f "tokens=*" %%a in ('dir /b /a-d /s') do (
      REM блаблабла к примеру печать
      echo "%%a"
    )
    popd

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 00:21 04-06-2009 | Исправлено: HaK1R, 00:35 04-06-2009
    ZeroCrash



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Всем привет! Незнаю можно ли при помощи батника как организовать такое:
    Нужно чтобы батник выбирал из списка записей в текстовом файле (допустим файл называется тест1.txt) выбирал случайную строчку и записывал её в отдельно созданном тестовом файле Готовый.txt (в первой строке текстовика). Но каждой строчке из файла тест1.txt соответствует другой тестовый файл (пример: строчка №3 из тест1 соответствует текстовому файлу тестик3.txt), выбирал случайную строчку из файла тестик3.txt и добавлял её соответственно во вторую строку файла Готовый.txt
     
    Я ещё учусь всему этому, но такое для меня чересчур сложно будет
     
    Помогите, если сможете пожалуйста. И о возможности объясните немного хотя бы что да как если не сильно затруднит. Заранее благодарен.

    Всего записей: 43 | Зарегистр. 15-04-2009 | Отправлено: 01:36 04-06-2009
    Smart_Chameleon

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

    Всего записей: 4 | Зарегистр. 25-05-2009 | Отправлено: 06:19 04-06-2009
    iMiKED



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Добрый день всем!
     
    Не подскажете как написать код для батника - обход подпапок некоторой папки (и выполнение некотрого действия там, например, копирование)? Уже надоело работать в 100 папках вручную(

    Всего записей: 305 | Зарегистр. 10-08-2006 | Отправлено: 06:49 04-06-2009
    alexander6161



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В 64-разрядной системе выполняется 32-разрядное приложение, из которого вызывается батник. Батник обращается к реестру через reg.exe, и путь к ключу программы из батника теперь выглядит так:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\приложение
    а не как из 32-разрядного приложения
    HKEY_LOCAL_MACHINE\SOFTWARE\приложение
    Само приложение когда обращается к реестру, попадает на последний ключ (без Wow6432Node). То есть этот ключ выглядит для приложения как обычный, без Wow6432Node.
     
    Кто уже сталкивался с этим ньюансом, подскажите как правильно надо запускать cmd.exe или reg.exe, может с каким ключом или из другой папки, хочется правильно сделать, а не городить огород с переименованием ключей реестра в батнике.

    Всего записей: 185 | Зарегистр. 17-08-2008 | Отправлено: 07:14 04-06-2009 | Исправлено: alexander6161, 17:18 07-06-2009
    Maza_Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    iMiKED
    Пример рекурсивного перебора всех вложенных папок и копирования файлов:

    Код:
     
    @Echo Off
     
    Set SourceDir=C:\Temp
    Set DestDir=D:\Temp
     
    For /R %SourceDir% %%A In (.) Do Copy "%%A\*.*" %DestDir%
     

    Так же смотрите описание команды XCOPY в ком. строке:

    Код:
     
    XCOPY /?
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:32 04-06-2009
    jonnydram

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

    Всего записей: 19 | Зарегистр. 20-02-2009 | Отправлено: 13:49 04-06-2009
    yrs



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    День добрый! Прошу подсказать, как расшарить каталоги на сервере с разными правами для разных прользователей. Например:
    есть папки folder1, folder2, folder3;  
           пользователи u1,u2,u3
    надо дать доступ к folder1 для u1 полный, для остальных чтение, к folder2 для u2 полный, остальным чтение и для папки folder3 всем всё, включая пользователей заходящих через удаленный рабочий стол.
    Заранее спасибо, а то заклинило

    Всего записей: 3 | Зарегистр. 31-03-2006 | Отправлено: 15:25 04-06-2009
    Maza_Faka



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

    Код:
     
    Net Share /?
    Cacls /?
    Xcacls /?
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 17:00 04-06-2009
    Elroir



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

    Цитата:
    И такой вопрос: чем отличается одна разделяющая черта от двойной т.е | от ||

    Одна черта - перенаправление вывода команды слева от черты, на вход команды справа.
    Две черты - если команда слева завершила свою работу с ошибкой (errorlevel > 0), то выполнить команду справа.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:05 04-06-2009
    Babzina



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите как сделать чтобы процесс копирования отображался в процентах от 0..100
     
    robocopy /eta как-то не очень красиво, если можно то без списка который отображается

    Всего записей: 15 | Зарегистр. 01-12-2006 | Отправлено: 23:37 04-06-2009
    HaK1R



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

    Цитата:
    Батник обращается к реестру через reg.exe, и путь к ключу программы из батника теперь выглядит так:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\приложение
    а не как из 32-разрядного приложения
    HKEY_LOCAL_MACHINE\SOFTWARE\приложение  

    т.е. батник видет с Wow6432Node а на самом деле если посмотреть через реестр Wow6432Node там не  будет?
     
    А в целом непонятно, что хочешь. Если можно, то код батника(если есть), проблему (с примером)(если есть) и что тебе надо(исправить\написать)
     
     
    Добавлено:
    Elroir

    Цитата:
    Две черты - если команда слева завершила свою работу с ошибкой (errorlevel > 0), то выполнить команду справа.  

    ты поставил errorlevel > 0. Вопрос: Почему больше? Кроме 0 и 1 errorlevel может принимает еще какие-нибудь значения или нет?

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 00:10 05-06-2009
    VetalKr

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    День добрый, подскажите как узнать основной шлюз в бат файле и записать в переменную, чтобы использовать в дальнейшем, например, route add.
     
    OS Windows XP SP3
     
    Заранее благодарен

    Всего записей: 3 | Зарегистр. 05-06-2009 | Отправлено: 01:36 05-06-2009
    NIKZZZZ



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

    Цитата:
    как узнать основной шлюз в бат файле и записать в переменную, чтобы использовать в дальнейшем, например, route add.

     

    Код:
    FOR /F "usebackq tokens=1* delims=:" %%i in (`ipconfig ^| find /i "шлюз" ^| find /i ": 10."`) do set ss=%%j
    if "%ss%"=="" (
      Echo Default gateway error
      pause>nul
      goto :eof
    )  
    cls
    @echo Default gateway %ss%
    ::route -f
    ::route add 0.0.0.0 MASK 0.0.0.0 %ss%
    ::Локальная сеть:
    ::route -p add 10.0.0.0 mask 255.0.0.0 %ss%
    :: и т.п.

     
    В примере предполагается, что шлюз - локалка (10.x.x.x)

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 01:43 05-06-2009 | Исправлено: NIKZZZZ, 01:48 05-06-2009
    alexander6161



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    HaK1R
    Постараюсь объяснить. Выполняется 32-разрядное приложение на 64-разрядной системе. Пишет/читает значения ключа
    HKEY_LOCAL_MACHINE\SOFTWARE\приложение
     
    Из этого приложения запускается батник имя.cmd такого содержания:
    for /f "tokens=3 usebackq delims=    " %%I in (`reg query "HKEY_LOCAL_MACHINE\SOFTWARE\приложение" /v "ключ"`) do set A=%%I
    или
    reg query "HKEY_LOCAL_MACHINE\SOFTWARE\приложение" /v "ключ"
     
    Результат такой - нет такого ключа в реестре. Зато есть такой ключ (для батника):
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\приложение
     
    Получается, либо cmd.exe, либо reg.exe запускается 64-разрядный, отсюда такой результат.
     
    Если посмотреть "Пуск"-"Выполнить"-"Regedit" в 64-разрядной системе - ключ этого приложения отображается так:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\приложение
     
    Вопрос: кто из участников форума сталкивался с 64-разрядными системами и что делали с батниками, написанными для 32-разрядных систем? Не менять же все ключи реестра в батнике? Посоветуйте?

    Всего записей: 185 | Зарегистр. 17-08-2008 | Отправлено: 05:34 05-06-2009 | Исправлено: alexander6161, 05:41 05-06-2009
    01MDM



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

    Цитата:
    Вопрос: кто из участников форума сталкивался с 64-разрядными системами и что делали с батниками, написанными для 32-разрядных систем? Не менять же все ключи реестра в батнике? Посоветуйте?

     
    Батнику все равно какая система 32 или 64 - он делает только то, что прописано в его теле.
    Если там указан ключ hkcu\a\b\c, он и будет отрабатывать hkcu\a\b\c, а не hkcu\a\b\64\c

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:42 05-06-2009
    jonnydram

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброе утро =)
     
    Все пытаюсь как-то освоить bat-анику, в связи с этим вопрос следующий:
     
    В командной строке набираю "for /l %%i in (0,1,4) do echo %%i" и получаю ошибку  
     
    Непредвиденное появление: %%i.
     
    А с командой "for /l %i in (0,1,4) do echo %i" получается нормальный цикл, как и должен вроде бы.  
     
    Почему? Ведь переменные как раз-таки через %% обозначаются..
     
     
    P.S. Пробовал в пуск-выполнить-cmd, WinXP SP2.

    Всего записей: 19 | Зарегистр. 20-02-2009 | Отправлено: 09:04 05-06-2009 | Исправлено: jonnydram, 09:12 05-06-2009
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru