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

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

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

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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    AdletFromKZ

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята у меня вопрос, могу ли я поставить новый проц. без переустановки винды.Сейчас 1,7Селерон, поставлю 2,8Селерон Д?

    Всего записей: 2 | Зарегистр. 24-07-2007 | Отправлено: 23:21 24-07-2007
    de1eted

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vmix
    последнее, что пришло в голову: Directory Opus логит все операции с файлами и может сохранить в txt, который можно отпарсить.
     
    ЛЮДИ КТО-НИТЬ расставит кавычки?

    Цитата:
    set mirpath=%USERPROFILE%\Application data\MirandaJ\nul
    IF NOT EXIST %mirpath%
    xcopy \\server\soft\mirandaJ %USERPROFILE%\Application data\MirandaJ /s

     
    Задача взять папку с сервака и положить в профиль юзверя
     
     
    Добавлено:
    AdletFromKZ
    да, но врядли она она станет мультипроцессорной

    Всего записей: 102 | Зарегистр. 10-04-2006 | Отправлено: 23:24 24-07-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    в переменной %%a есть символы <>
    как заставить команду set скушать их?
    set %%a=%%b получается ошибка

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 00:02 25-07-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Ты не можешь так использовать переменные вида %%x или %x  - им нельзя присвоить значение.
    А если обычная переменная, тогда так:

    Код:
    set "test=<>"

    или так

    Код:
    set "test=%%а"

     
    de1eted

    Код:
    set "mirpath=%USERPROFILE%\Application data\MirandaJ\nul"
    IF NOT EXIST "%mirpath%"  
    xcopy \\server\soft\mirandaJ "%USERPROFILE%\Application data\MirandaJ" /s


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:30 25-07-2007 | Исправлено: Elroir, 00:33 25-07-2007
    de1eted

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

    Цитата:
    set "mirpath=%USERPROFILE%\Application data\MirandaJ"
    IF NOT EXIST "%mirpath%" (
    xcopy \\server\soft\mirandaJ "%USERPROFILE%\Application data\MirandaJ" /s /i /q
    )


    Всего записей: 102 | Зарегистр. 10-04-2006 | Отправлено: 00:50 25-07-2007 | Исправлено: de1eted, 01:02 25-07-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
     Введите команду:  set "test=<>" &&echo %test%
    Непредвиденное появление: >.

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 01:05 25-07-2007
    Elroir



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

    Цитата:
    подскажите пожалуйста  
    как поднять регистр у $COMPUTERNAME$


    Код:
     
    @echo off
    setlocal
    set "test=%computername%"
    echo %test%
    set "test=%test:a=A%"
    set "test=%test:b=B%"
    set "test=%test:c=C%"
    set "test=%test:d=D%"
    set "test=%test:e=E%"
    set "test=%test:f=F%"
    set "test=%test:g=G%"
    set "test=%test:h=H%"
    set "test=%test:i=I%"
    set "test=%test:j=J%"
    set "test=%test:k=K%"
    set "test=%test:l=L%"
    set "test=%test:m=M%"
    set "test=%test:n=N%"
    set "test=%test:o=O%"
    set "test=%test:p=P%"
    set "test=%test:q=Q%"
    set "test=%test:r=R%"
    set "test=%test:s=S%"
    set "test=%test:t=T%"
    set "test=%test:u=U%"
    set "test=%test:v=V%"
    set "test=%test:w=W%"
    set "test=%test:x=X%"
    set "test=%test:y=Y%"
    set "test=%test:z=Z%"
    echo %test%
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:10 25-07-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    дело в том, что я читаю входящую строку из файла командой
    for /f "delims== tokens=1,2" %%a in (%conf%) do (set %%a=%%b)
    содержание которого такое
    find_string=<HTML>
    так вот, если убрать символы <>, то все норамльно читается, а ведь иногда они нужны
    может есть способ это обойти?

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 01:12 25-07-2007
    Elroir



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

    Цитата:
    Непредвиденное появление: >.

    Вопрос был - как "как заставить команду set скушать их?", а не "как заставить команду echo скушать их?"

    Код:
     
    set "test=<>"
    set "test=%test:<=^<%"
    set "test=%test:>=^>%"
    echo %test%
     

     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:16 25-07-2007
    Maza Faka



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

    Цитата:
    тоесть если COMPUTERNAME=ivanov-ab или Ivanov-AB  а нужно IVANOV-AB

    Можно так:

    Код:
     
    @echo off
    set str=%computername%
    for %%a in (
      A B C D E F G H I
      J K L M N O P Q R
      S T U V W X Y Z
    ) do call :UCase %%a
     
    echo UCase(%computername%) = %str%
    pause
    goto :EOF
     
    :UCase
    set var=%1
    call set str=%%str:%var%=%var%%%
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 09:26 25-07-2007
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka вложенный Call там совершенно лишний

    Код:
    set str=%computername%
    for %%a in ( A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do call set str=%%str:%%a=%%a%%  
    echo UCase(%computername%) = %str%
    pause
     

     
    кто б ещё чем set лучше if :
    call set str=%%str:%%a=%%a%% вполне проходит  
    а call if чего-нибудь дает  
    "if" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 10:45 25-07-2007 | Исправлено: wolf0425, 12:54 25-07-2007
    ROMANEX



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vserd
    что-то не получается. можно всю строку с указанием папки с которой начинать и места куда сохранять. Спасибо!

    Всего записей: 64 | Зарегистр. 15-06-2005 | Отправлено: 10:59 25-07-2007
    Yuki2003



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

    Код:
    for /f "tokens=2*" %%a in ('reg query HKLM\Software\7-Zip /v Path ^| findstr /i Path') do set backup=%%b\7z.exe

    возвращает

    Цитата:
    Ошибка: Системе не удалось найти указанный раздел или параметр реестра

    то сделать что-то вроде

    Код:
    echo Файловый архиватор 7-Zip не установлен >> errors.txt
     

    Спасибо!

    Всего записей: 1077 | Зарегистр. 10-07-2003 | Отправлено: 13:18 25-07-2007 | Исправлено: Yuki2003, 13:19 25-07-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Yuki2003
    REG возвращает по ErrorLevel 1 если не нашло ветку реестра

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:26 25-07-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
    Вряд ли из скобок for-a можно вытащить errorlevel
     
    Yuki2003

    Код:
    for /f "tokens=2*" %%a in ('reg query HKLM\Software\7-Zip /v Path 2^>nul ^| findstr /i Path') do set "backup=%%b\7z.exe"
    if "%backup%"=="\7z.exe" echo Файловый архиватор 7-Zip не установлен>>errors.txt


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:43 25-07-2007 | Исправлено: Elroir, 14:43 25-07-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Elroir
    А зачем тогда все делать в скобках?
     

    Код:
    reg query HKLM\Software\7-Zip>Nul
    If ErrorLevel 1 (Echo Не установлен) & (GoTo :EOF)
    for /f "tokens=2*" %%a in ('reg query HKLM\Software\7-Zip /v Path ^| findstr /i Path') do set backup=%%b\7z.exe
     

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:47 25-07-2007
    Yuki2003



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

    Код:
    For /f "tokens=2*" %%a In ('reg query HKLM\Warez\7-Zip /v Path ^| FindStr /i Path') Do Set backup=%%b\7z.exe & If ErrorLevel 1 echo Файловый архиватор 7-Zip не установлен>>errors.txt

    не получилось выдает по прежнему "системе не удалось..."
    Elroir
    а что "делает"

    Код:
    2^>nul

    ?
     
    Добавлено:
    KapralBel
    по второму примеру - два раза запускать reg query? а это есть гуд?

    Всего записей: 1077 | Зарегистр. 10-07-2003 | Отправлено: 14:49 25-07-2007
    Elroir



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

    Цитата:
    а что "делает" 2^>nul  

    Он как раз и скрывает сообщение "системе не удалось..."
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:54 25-07-2007
    Yuki2003



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Понял, я просто свой скрипт пишу "тупым копированием" из форума
    А что в данном случае делает символ ^?
     
    Добавлено:

    Код:
    For /f "tokens=2*" %%a In ('reg query HKLM\Warez\7-Zip /v Path 2^>nul ^| FindStr /i Path') Do Set backup=%%b\7z.exe
    Echo %ErrorLevel%

    Выдает 0 Это потому что, его Do Set "перекрыл"?

    Всего записей: 1077 | Зарегистр. 10-07-2003 | Отправлено: 14:57 25-07-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Yuki2003
    тебе надо красивое или работоспособное решение ?
     
    ^  -позволяет использовать следующий спецсимвол как обычный символ

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:02 25-07-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

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru