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

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

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Да, я уже разобрался с переменными, всё получилось через setlocal enabledelayedexpansion и !. Но если в названии файла или папки встречается ! , то опять 25. Так что replacer подходит. А в названиях папок и файлов нет <> и непечатаемых знаков (?).А у gsar только эти три знака являются проблемными?

    Цитата:
    set "var=%var::=:058%"    
    set "var=%var:\=:092%"    
    set "var=%var:"=:034%"  


    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 13:04 19-07-2007 | Исправлено: king_stiven, 13:19 19-07-2007
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven ну я ж зачем-то писал про вариант с call - как раз для случаев, когда setlocal enabledelayedexpansion неприемлемы, он вполне решает проблему.
     

    Цитата:
    А у gsar только эти три знака являются проблемными

    эти два (верхние). кавычки в строке проблемные не у gsar, а по жизни.
    если уверен что кавычек " внутри имен не будет - можно не заменять.
    для реплейсера, кстати, невредно провериться на ; в именах
     
     
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 13:33 19-07-2007 | Исправлено: wolf0425, 13:34 19-07-2007
    mitrichbel

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    ну в целом представляю, что такое пакетная обработка файлов, да. Про help понял, пошёл.

    Всего записей: 1371 | Зарегистр. 30-04-2003 | Отправлено: 14:26 19-07-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    попробуй увеличивать число кавычек на 1, обрамляющие название файла или папки до тех пор, пока не достигнешь желаемого результата
     
    Добавлено:
    в одном батнике мне помогло достичь примерно такой цели аж 5 кавычек
     
    Добавлено:
    All, такая задача:
    есть некая строка из набора 16-ричных символов, напимер
    044C0437043E0432043004420435043B
    как пребразовать эту строку к виду
    $04$4C$04$37$04$3E$04$32$04$30$04$42$04$35$04$3B
    зы: хочу передать ее в таком виде для замены в хекс-режиме через sbs2.com

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 18:31 19-07-2007
    NIKZZZZ



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

    Цитата:
    есть некая строка из набора 16-ричных символов, напимер
    044C0437043E0432043004420435043B
    как пребразовать эту строку к виду
    $04$4C$04$37$04$3E$04$32$04$30$04$42$04$35$04$3B


    Код:
    echo off
    set "string=044C0437043E0432043004420435043B"
    set "result="
    :_2
    if "%string%"=="" goto _1
    set result=%result%$%string:~0,2%
    set string=%string:~2%
    goto _2
    :_1
    echo %result%

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 19:56 19-07-2007 | Исправлено: NIKZZZZ, 19:56 19-07-2007
    TCPIP

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

    Цитата:
    Это том многотомного архива или отделный архив?

    Отдельный архив. Многотомные, там где есть расширение part.x[x[x]].rar, распаковываются на ура.  
    Например: 01_The_Chase.part01.rar; 01_The_Chase.part02.rar;...
    Ровно так же отлично распаквываются и отдельные архивы, у которых расширение без номера тома --- .rar.
    Например:  01_The_Chase.rar
    Проблема начинается, если отдельный rar-архив содержит точку в имени.
    Например: 01.The_Chase.rar.
    Такие архивы не обрабатываются вообще, ибо бетч обходит их стороной. Понятно, что, замени точку в имени и проблема решена, но, наверняка есть более элегантное решение.

    Всего записей: 4667 | Зарегистр. 31-01-2003 | Отправлено: 20:16 19-07-2007
    NIKZZZZ



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

    Цитата:
    Проблема начинается, если отдельный rar-архив содержит точку в имени.

    Используй короткие имена файлов - вместо %i поставь %~si .

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 20:21 19-07-2007 | Исправлено: NIKZZZZ, 20:22 19-07-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vmix
    Скрипт для ftp.exe, для выкладывания файла rem_fs на ftp - put_file.txt:

    Код:
     
    open hostname
    username
    password
    delete rem_fs.txt
    put rem_fs.txt
    quit
     

    Скрипт заходит на ftp, удаляет (если есть) файл rem_fs.txt, и кладет туда новый файл rem_fs.txt. Выделенные названия меняешь на свои.
    Запускается скрипт командой (можно из батника):

    Код:
    ftp -s:put_file.txt

     
    Скрипт для ftp.exe, для получения файла rem_fs с ftp - get_file.txt:

    Код:
     
    open hostname
    username
    password
    get rem_fs.txt
    quit
     

    Запускается батником:

    Код:
     
    @echo off
    del /q /f rem_fs.txt 2>nul
    ftp -s:get_file.txt
     

     
    Батник make_fs.cmd:

    Код:
     
    @echo off
    if not exist rem_fs.txt goto error
    for /f "tokens=*" %%a in (rem_fs.txt) do (
    md %%~dpa>nul 2>nul
    fsutil file createnew "%%a" 0
    )
    goto :EOF
    :error
    echo Error - rem_fs.txt not found
     

    Батник создает файлы нулевого размера на том месте на локальном диске, куда указывают пути из rem_fs.txt. Я не делал проверку - существует ли файл с тем же именем, что и создаваемый. Если существует - будет сообщение об ошибке и файл останется нетронутым.
     
    Дальше, я думаю, разберешься сам. Ну или задавай вопросы

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:00 19-07-2007 | Исправлено: Elroir, 21:03 19-07-2007
    Nagual



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

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



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Уважаемые помогите создать батник!
     
    Есть текстовый файл, допустим list.txt, внутри мого чего написано, единственное что нужно сделать - это найти слово item0, заменить на item1, а item1 заменить на item0
     

    Всего записей: 201 | Зарегистр. 01-04-2006 | Отправлено: 09:11 20-07-2007
    KapralBel



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

    Код:
     
    @Echo Off
    gsar -sItem1 -r### -i -o list.txt
    gsar -sItem2 -rItem1 -i -o list.txt
    gsar -s### -rItem2 -i -o list.txt

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 09:42 20-07-2007 | Исправлено: KapralBel, 09:44 20-07-2007
    jupiter1976



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    KapralBel
    пишет gsar не является внутренней или внешней командой

    Всего записей: 201 | Зарегистр. 01-04-2006 | Отправлено: 10:03 20-07-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    jupiter1976
    А в шапке поискать утилиту?

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:10 20-07-2007
    jupiter1976



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

    Всего записей: 201 | Зарегистр. 01-04-2006 | Отправлено: 10:13 20-07-2007
    slech



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите пожалуйста как сделать  
     
    net use k: \\xx.xx.xx.xx\с$
     
    net use k: /del /Y
     
    т.е. запускаем батник он монтирует диск
    второй раз запускаем он отмонтирует аго
     
    итого что бы он делал то что ещё не сдеално - если есть то отмонтирует, если нету то мнотирует.
     
    спасибо.

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 12:01 20-07-2007
    KapralBel



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

    Код:
     if exist k:\autoexec.bat (net use K: /del /y) else (net use K: \\x.x.x.x\C$)

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:16 20-07-2007
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну наверное сподручней все-таки будет добавить небольшие проверки:
    Код:
    @echo off
    SET NET_DISK=K:
    SET NET_SHARE=\\x.x.x.x\C$
    FOR /f "usebackq tokens=1,2 eol=;" %%a IN (`net use`) DO IF "%%a"=="%NET_DISK%" SET CURRENT_CONNECT=%%b
    if "%CURRENT_CONNECT%"=="" ( if exist %NET_DISK% echo Этот диск локальный!&EXIT ELSE net use %NET_DISK% %NET_SHARE%)
    if "%CURRENT_CONNECT%"=="%NET_SHARE%" (net use %NET_DISK% /delete) ELSE (net use %NET_DISK% /delete & net use %NET_DISK% %NET_SHARE%)


    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 13:52 20-07-2007
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    добрый день подскажите пожалуйста
     
    хочу запустить на машинах из списка команнду
    и забыл как это сделать
     

    Код:
     
    for /f "tokens=1" %%a in (list.csv) do set  ??=hostname ??
    psexec \\%hostname% -u main\inst_sms_agt -p 123456789 -c -d 1.cmd
     

     
    list.csv

    Код:
     
    hostname1
    hostname2
    .....
     

     
    1.cmd

    Код:
     
    start /wait copy /y \\smssrv\1\lmhosts %SystemRoot%\System32\drivers\etc\
    nbtstat -R
     

     
    спасибо

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



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

    Код:
     for /f "tokens=1" %%a in (list.csv) do set psexec \\%%a -u main\inst_sms_agt -p 123456789 -c -d 1.cmd  

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

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
     
    прикольно я set убрал и пошло
    спасибо
     
    вот еще вопрос в в голове крутится
     
    у меня машины VPro есть (управление до загрузки ОС)
     
    есть некие проблемы, пока машины выключены они в днс регистрируются как они запровиженены на сервере AMT  например IVANOV-AB это стандарт
     
    грузится WINDOWS они перерегистрируются в ДНС уже так, как вбил инженер техподдержки - например  Ivanov-AB  
     
    у меня NetworkInspectorFluke утром и вечером регистрирует эти изменения
     
    хочу запустить cmd
     
    только поднять регистр у $COMPUTERNAME$
     
    reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v Hostname /t REG_SZ /d $COMPUTERNAME$ /f
     
    как это можно сделать?
     
    спасибо за Вашу помощь
     
     
     
    Добавлено:
    KapralBel
     

    Код:
     for /f "tokens=1" %%a in (list.csv) do (
     ping %%a %1 >Nul
     if !errorlevel!==0 (
      psexec \\%%a -u main\inst_sms_agt -p 123456789 -c -d 1.cmd
     
     
    как продолжить подмагните пожалуйста
     
    спасибо

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 15:43 20-07-2007 | Исправлено: JohnRD, 15:43 20-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