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

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

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

vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 16:59 14-11-2006 | Исправлено: Elroir, 04:30 26-04-2007
    xSabir

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Я имел ввиду так:  
    set /p VarName=Enter number string to delete:
    echo %VarName%
    Т.е VarName я задаю где-то раньше а потом уже
    set "skip=%VarName%"
     
    Добавлено:
    Elroir
    я имелввиду например так:
     
    set /p VarName=Enter number string to delete:
    echo %VarName%
     
    а теперь уже  
     set "skip=%VarName%"
     
     
    Добавлено:
    че то ступил, два раза написал

    Всего записей: 4 | Зарегистр. 06-03-2007 | Отправлено: 20:44 06-03-2007
    Elroir



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

    Цитата:
    Т.е VarName я задаю где-то раньше а потом уже  
    set "skip=%VarName%"  

    Конечно так можно. А можно сразу присваивать значение skip-у (set /p skip= ...) или использовать переменную %VarName%, в том месте, где я использую %skip%.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:42 06-03-2007
    KciNKh



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    А вот такое задание:
    - нужно из батника управлять состоянием принтера (можно сразу сетевого, или хотябы локального т.к. удаленный запуск потом сделать не проблема)  
    Например изменить следующие состояния: приостановить печать/автономная работа (work offline)/т.д.
    Как такое сделать?
    что-то я не могу правильный поисковый запрос составить чтобы что-то найти такое, максимум что-то через regsvr32 printui.dll,... но как это в батнике поюзать загадка .

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KciNKh
    Посмотри файлики *.vbs в system32. Особенно те, которые имеют "prn" в названии. Запускать их надо не двойным щелчком мыши(wscript.exe), а из комстроки cscript file.vbs

    Всего записей: 1671 | Зарегистр. 08-12-2004 | Отправлено: 23:51 06-03-2007 | Исправлено: igor_andreev, 23:56 06-03-2007
    KciNKh



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

    Цитата:
    Посмотри файлики *.vbs в system32.

    о что-то похожее (особенно prnqctl.vbs), только на 2k Advanced Server (по-дефолту) оно наверное не сработает, а нужно именно под сервак, но все равно сенкс завтра испытаю.

    Цитата:
    Запускать их надо не двойным щелчком мыши(wscript.exe), а из комстроки cscript file.vbs

    ну эт понятно

    Всего записей: 39 | Зарегистр. 01-01-2007 | Отправлено: 00:40 07-03-2007
    igor_andreev

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

    Цитата:
    только на 2k Advanced Server (по-дефолту) оно наверное не сработает, а нужно именно под сервак, но все равно сенкс завтра испытаю.
    А ты на 2K AS тоже покопайся в system32

    Всего записей: 1671 | Зарегистр. 08-12-2004 | Отправлено: 00:51 07-03-2007
    euheny



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

    Цитата:
    самое место ей в ресурс ките

    А вот в хр-ишном не нашёл.
     

    Всего записей: 3929 | Зарегистр. 22-11-2006 | Отправлено: 04:25 07-03-2007
    dedds



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите пожалуйста.... задача: создать из батника ZIP архив в который будет входить содержимое  каталога "C:\WORK\" включая подкаталоги... с помощью какой утилиты это удобнее сделать... и пример если можно.... Заранее благодарю...

    Всего записей: 21 | Зарегистр. 22-12-2005 | Отправлено: 09:36 07-03-2007
    winvik



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Поможите с лог файлами?
    Есть примитивный скрипт вида: del *.mp3
    Он запускается по ночам и удаляет из расшаренной папки на сервере mp3шки и прочее барахло, которое юзерам там хранить запрещено... Скрипт отрабатывает и закрывается...
    Нужно чтобы он результаты своей работы писал в текстовый файл - что удалено.
     
    Вариант  
    del *.mp3 >>log.txt не срабатывает
    Хотя dir >>log.txt работает
    Подскажите что не так?

    Всего записей: 10 | Зарегистр. 07-03-2007 | Отправлено: 12:07 07-03-2007
    Simoid



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Есть программа, которую нужно запустить в скрытом режиме.
     
    Программа находится по следующему адресу:
    C:\Program Files\QQQ\
    Требуется запустить с параметром start
     
    Пробовал подобное:
    CreateObject("WScript.Shell").Run("C:\Program Files\QQQ\1.exe"),0,false
     
    Но выдает ошибку, и запускается без ключа.
     
    Ошибка следующая:
     
    Строка 1
    Символ 1
    Ошибка Неудается найти указанный файл
     
    Как мне выйти из сложившегося положения ?

    Всего записей: 862 | Зарегистр. 23-07-2005 | Отправлено: 12:14 07-03-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Simoid
    Пробел в пути к файлу. Или пиши короткий путь, "C:\Progra~1\QQQ\1.exe" или удваивай кавычки в пути(итого по три штуки с каждой стороны получится), """C:\Program Files\QQQ\1.exe"""
     
    Добавлено:
    Аа, еще и с параметром запустить надо. Тогда так:
    CreateObject("WScript.Shell").Run("""C:\Program Files\QQQ\1.exe""")&" start",0,false

    Всего записей: 1671 | Зарегистр. 08-12-2004 | Отправлено: 12:27 07-03-2007 | Исправлено: igor_andreev, 12:31 07-03-2007
    ViSiToR



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

    Цитата:
    Нужно чтобы он результаты своей работы писал в текстовый файл - что удалено

    Можно так:
     

    Код:
    @echo off
    chcp 1251 > nul
    For %%i in (*.mp3) Do (
    Del "%%i"
    If Not Exist "%%i" (Echo %Time:~0,-3%^>^> File "%%i" was deleted >> log.txt) Else (Echo %Time:~0,-3%^>^> File "%%i" was NOT deleted >> log.txt)
    )
     

     
    Если среди файлов нет имён с кириллицей, то строку с chcp можно опустить.

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 13:11 07-03-2007
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    уважаемые гуру
     
    можно ли этот  
    cmd

    Код:
     
    reg add HKLM\SOFTWARE\MDPREI\Cryptography\KeyDevices\KEYFILE /v DLL /t REG_SZ /d C:\WINDOWS\system32\reader\keyfile.dll /f
     

    использовать и для XP и 2000
    поймет ли реестр C:\%SystemRoot%\system32\reader\keyfile.dll
    как выкрутиться в этом случае
    спасибо  
     

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 13:25 07-03-2007 | Исправлено: JohnRD, 13:31 07-03-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JohnRD
    2000 поймет, если положишь к нему в PATH файл reg.exe. По умолчанию в Windows 2000 нет такой команды, как REG. Reg.exe для Windows 2000 есть в ресурс ките, но в старой версии reg.exe из W2K Resource Kit синтаксис немного отличается от XP-шной. Посему рекомендую для унификации батников в Winnt\system32 класть файл reg.exe, взятый именно из Windows XP.

    Цитата:
    поймет ли реестр C:\%SystemRoot%\

    Лучше просто %SystemRoot% Должен понять.
     
    Добавлено:
    Да кстати, если и не поймет %systemroot%(я не знаю просто, что эт за ключ, MDPREI) - невелика беда, всегда можно на месте рег-файл написать и запустить.

    Код:

    @ECHO OFF
     
    REM Удваиваем в пути C:\Windows или E:\Winnt или что там, обратный слеш
    SET "WINFOLDER=%SYSTEMROOT%"
    SET "WINFOLDER=%WINFOLDER:\=\\%"
     
    ECHO REGEDIT4>TMP.REG
    ECHO.>>TMP.REG
    ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\MDPREI\Cryptography\KeyDevices\KEYFILE]>>TMP.REG
    ECHO "DLL"="%WINFOLDER%\\reader\\keyfile.dll">>TMP.REG
    ECHO.>>TMP.REG
     
    REGEDIT /S TMP.REG
    DEL TMP.REG

    Сработает везде на NT/2000/XP/2003. Как бонус - класть в win2k reg.exe от winxp в случае написания *.reg на месте не надо

    Всего записей: 1671 | Зарегистр. 08-12-2004 | Отправлено: 13:46 07-03-2007 | Исправлено: igor_andreev, 14:19 07-03-2007
    winvik



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Большое спасибо за помощь, есть еще один вопрос: команду del я хочу использовать с ключом /s чтобы скрипт чистил и вложенные папки...  
    Изменила четвертую строчку вашего скрипта:
    Del /s "%%i"
    но подкаталоги не чистит... что неправильно?

    Всего записей: 10 | Зарегистр. 07-03-2007 | Отправлено: 14:21 07-03-2007
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    я вобщем так и делал - клал в папку с пакетом reg.exe от XP
    но столкнулся с таким: есть какое то ограничение на длину толи самой команды
    толи значения

    Код:
     
    reg add "HKLM\SOFTWARE\LANIT\LanDocs\2.0\CA sertificates\Certificates\080D9D073238BD2E53F6E8484AD8221251D18F2C" /v Blob /t REG_BINARY /d 000000...0000 /f
     

    если длина значения /d   - 1604 символа вписывает в реестр
    а если уже 1926 то просто говорит что длинная строка

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 14:22 07-03-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    winvik
    Чего голову себе забиваешь? Сам же сказал, команда дир - работает.
    dir /b /s>log
    del /f /s /q *
     
    И кстати просто del /f /s /q *>log тоже работает
     
    JohnRD

    Цитата:
    есть какое то ограничение на длину толи самой команды  
    толи значения  

    Ну да, есть такое, в NT/2000 - 2047 символов, XP/2003 - 8191 символ. У тебя в W2K вместе с reg add хоткей_локал_машына... + ключ 1926 символов - видать больше 2047 получается. Пиши тогда регфайл на месте

    Код:

    ECHO."Твой ключ"=hex:a4,00,00,00,03,00,00,00,35,35,32,37,34,2d,4f,45,4d,2d,\>>TMP.REG
    ECHO.          34,34,2d,36,32,39,34,38,00,2d,00,00,00,41,32,32,2d,30,30,30,\>>TMP.REG
    ... и т.д.

     
     

    Всего записей: 1671 | Зарегистр. 08-12-2004 | Отправлено: 14:49 07-03-2007 | Исправлено: igor_andreev, 15:07 07-03-2007
    JohnRD

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

    Код:
    igor_andreev

    спасибо
     
    я так понял
    если пользоваться reg.exe  
    достаточно это SET "WINFOLDER=%SYSTEMROOT%"    
    проверил работает
     
    если через REGEDIT4 то еще это SET "WINFOLDER=%WINFOLDER:\=\\%" (но не могу понять эту переменную без коментариев)
     
    столкнулся еще с одним:
    у пользователя почему то не отработал родной regedit.exe
    я в пакет добавил regedit.exe от XP и обнаружил ошибку при его запуске,  
    "точка входа в процедуру GetInheritanceSourceW не найдена в библиотеке DLL ADWAPI32.dll"
    мне нужно запускать regedit от имени пользователя чтобы положить в его ветку,
    и как раз то что больше 2047 символов, нет ли унивесального regedit чтоли
     
    и еще вопрос как логиловать результаты команд в файл
    те все что происходит в окне cmd

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 16:27 07-03-2007 | Исправлено: JohnRD, 16:46 07-03-2007
    igor_andreev

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

    Цитата:
    если пользоваться reg.exe  
    достаточно это SET "WINFOLDER=%SYSTEMROOT%"
    Если пользоваться reg.exe, то это вообще не надо.
    Цитата:
    (но не могу понять эту переменную без коментариев)  
    А я ж написал коммент, это мы удваиваем обратный слеш, для правильного синтаксиса *.reg.
    Код:

    @ECHO OFF  
     
    REM придумали переменную WINFOLDER и присвоили ей значение
    REM текущей папки Windows  
    SET "WINFOLDER=%SYSTEMROOT%"
    ECHO Windows dir - %WINFOLDER% & PAUSE
     
    REM взяли, да и удвоили обратный слеш
    SET "WINFOLDER=%WINFOLDER:\=\\%"
    ECHO Now Windows dir - %WINFOLDER% & PAUSE


    Цитата:
    нет ли унивесального regedit чтоли
    Ну он и так универсальный, у каждого свой . А у пользователя с правами там что? RUNAS /? может попробовать.
    Цитата:
    и еще вопрос как логиловать результаты команд в файл  
    те все что происходит в окне cmd
    Так и логировать:
    команда /ключи >>log.txt 2>>&1
    "Правильные" утилиты перенаправление понимают Если попалась "неправильная" или хочешь, чтобы и на консоль выводилось и в лог одновременно писалось, то mtee в помощь http://www.commandline.co.uk/mtee/

    Всего записей: 1671 | Зарегистр. 08-12-2004 | Отправлено: 17:47 07-03-2007 | Исправлено: igor_andreev, 17:49 07-03-2007
    Nekt

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ а вот тута у меня net share IPC$ /delete тока когда пускаю у меня пишет доступ отказано. Как грузить это через профиль? А, ещё как пускать прогу через батник, поискал но внятно нечего не нашел.

    Всего записей: 640 | Зарегистр. 24-01-2006 | Отправлено: 21:01 07-03-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 2
    vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru

    Рейтинг.ru