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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 11:44 02-09-2007 | Исправлено: king_stiven, 12:03 02-09-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    такая задача есть:
    есть два каталога distrib и distrib2, которые нужно синхронизировать
    то есть, если в первом каталоге удалить или добавить файл, чтобы во втором каталоге повторилась та же структура при минимальных затратах системы на процесс копирования
    условие: стандартные средства, отсутствие временных файлов
     
    попробовал переделать предыдущий код

    Код:
    cd distrib
    for /f "usebackq tokens=*" %%d in (`dir/b/s/a:-d "..\distrib2\*"`) do (
    if not exist %%d (del/q ..\distrib2\%%~nxd) else (
            echo %%d ..\distrib2\%%~nxd
            pause
            fc %%d ..\distrib2\%%~nxd
            if errorlevel 1 xcopy/y/f/e %%d ..\distrib2\%%~nxd
        )
    )

    появляется ошибка при работе с файлами в подкалалогах, то есть переменная %%~nxd не учитывает подкаталоги
    \distrib2\Language\rus.INC ..\distrib2\rus.INC
    как же заставитьее это сделать?

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 17:15 02-09-2007
    vu1tur



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Nagual
    может проще воспользоваться утилиткой rsync?
     
    rsync -avr --delete distrib/ distrib2


    ----------
    I am free of all prejudice. I hate everyone equally.

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 17:40 02-09-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vu1tur
    потестил, никакой синхронизации, только загрузка ЦП на 95%
    а зачем нам кузнец?
    да и

    Цитата:
    условие: стандартные средства, отсутствие временных файлов

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 18:05 02-09-2007
    vu1tur



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Nagual
    пардон, то какой-то другой rsync
    я имел в виду этот:
    http://rsync.samba.org/

    ----------
    I am free of all prejudice. I hate everyone equally.

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 18:29 02-09-2007
    gegug



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как при помощи bat файла сохранить данные о проге из реестра в reg файл для дальнейшего запуска?

    Всего записей: 260 | Зарегистр. 06-01-2007 | Отправлено: 18:44 02-09-2007 | Исправлено: gegug, 18:45 02-09-2007
    slech



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gegug
    в 2-ух темах наследил
    тут ответил.
     

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 18:51 02-09-2007
    magax

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    проблему с аськой решили...
    знакомый пришел и запустил..)))))
    а вот с батники ради интереса пробовал запустить у себя на компе..
    но никакой реакции...
    dardreams

    Цитата:
    Попробуй это  
     
    Код:
     
    for /f %%a in ('dir /l /b /s c: ^|find "icq.exe"') do set icq=%%a
    "%icq%"  

     

    Цитата:
    Код:
     
    for /f %%a in ('dir /l /b /s c: ^|find "icq.exe"') do %%a

     
    SPV_Ed

    Цитата:
    "Пуск - Найти - Файлы и папки" - чем не устраивает?

    человек впервые за компом осваиваится...
    для него такой вариант слишком сложный..
     

    Всего записей: 80 | Зарегистр. 11-02-2007 | Отправлено: 19:19 02-09-2007
    NIKZZZZ



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

    Код:
    FOR /f "tokens=1* delims== skip=7 eol=;" %%a IN (file.txt) DO SET %%a=%%b

    Как это может работать?
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 21:32 02-09-2007 | Исправлено: NIKZZZZ, 21:33 02-09-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
     
    test.txt (qwe=rty 123)
    FOR /f "tokens=1* delims==" %%a IN (test.txt) DO SET %%a=%%b && echo %qwe%
     
    Я думаю, что просто подставляют значения в каком-нибудь "ini", т.е. сразу в переменную слева присваивают значение из правой части.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 00:35 03-09-2007
    king_stiven

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

    Код:
    cd /d C:\temp\6\1
    :begin
    set /a sum+=1
    if "C:\" neq "%cd%" (
        cd ..
        goto begin
    )
    setlocal enabledelayedexpansion
    set blok=!sum!
    setlocal DISABLEDELAYEDEXPANSION
    for /f "usebackq tokens=*" %%d in (`dir "C:\temp\6\1\*.*" /o /b /s /a:-d`) do (
        for /f "tokens=%blok%* delims=\" %%e in ("%%d") do if not exist "D:\2\%%f" del "%%d" /q
    )
    cd /d D:\2
    :begin1
    set /a sum1+=1
    if "D:\" neq "%cd%" (
        cd ..
        goto begin1
    )
    setlocal enabledelayedexpansion
    set blok1=!sum1!
    setlocal DISABLEDELAYEDEXPANSION
    for /f "usebackq tokens=*" %%d in (`dir "D:\2\*.*" /o /b /s /a:-d`) do (
        for /f "tokens=%blok1%* delims=\" %%e in ("%%~dpd") do xcopy "%%d" "C:\temp\6\1\%%f" /y /i /d
    )

     
    где C:\temp\6\1 каталог, который синхронизируем с D:\2
    Насчёт
    Цитата:
    при минимальных затратах системы на процесс копирования  
    не уверен, пустые каталоги не удаляются, конечно это можно доделать.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 01:14 03-09-2007
    JekaRus

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как с помощью утилиты от sysinternals psexec.exe для запуска процессов на удаленной тачке запустить процесс из system32, если неизвестно имя системной папки? Например я копирую файл в \\%1\admin$\system32. Для запуска процесса необходимо указать источник файла. Но если указать переменную %systemroot%, то будет использовано имя текущей системы а не удаленной. Как можно указать %systemroot% удаленной?

    Всего записей: 1046 | Зарегистр. 10-08-2005 | Отправлено: 03:38 03-09-2007
    NIKZZZZ



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

    Цитата:
    подставляют значения в каком-нибудь "ini"

    Да, это и есть инишный файл. Но я нигде не слышал, о возможности такой подстановки.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 03:54 03-09-2007
    dardreams



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

    Цитата:
    а вот с батники ради интереса пробовал запустить у себя на компе..  
    но никакой реакции...  

    А у меня на компе работает, может у него qip ?
     
    Добавлено:
    Maza Faka
    Спасибо, а ты мог бы мне объяснить как говорится на пальцах, как это работает ? или хотябы тоже самое только с ремарками

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 06:55 03-09-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dardreams
     
    Просто рассмотри пример Maza Faka, используя справку по командам for. if  

    Код:
    @echo off
    for /f "delims=" %%a in (test.txt) do (
        if not defined flag (
            set song=%%a
            set flag=yes
        ) Else (
            set artist=%%a
            set flag=
        )
    )
    echo %song% %artist%

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 07:16 03-09-2007
    dardreams



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

    Цитата:
    if not defined flag

    вот про эту строчку я не нашел

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 07:29 03-09-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    dardreams
    есть, есть
    Читается так
    Если переменная окружения flag не определена, то

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 07:52 03-09-2007
    Maza Faka



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

    Цитата:
    строчку я не нашел

    Если не определена пременная...

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:51 03-09-2007
    sD31337

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    привет всем , один вопрос возможно ли с помощью батника отправит текстовый файл на какой нить сайт ?  
    ну что то типо того
    hi>hi.txt  
    xcopy hi.txt www.primer.net\upload  
     
    ну что то типо того , и еще вопрос можно ли каким нить образом узнать свой ип в инете с помощью bat ?  
     
    за ранние извиняюсь если вопросы тупые =)

    Всего записей: 30 | Зарегистр. 27-10-2006 | Отправлено: 01:19 04-09-2007 | Исправлено: sD31337, 01:23 04-09-2007
    Maza Faka



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

    Цитата:
    xcopy hi.txt www.primer.net\upload

    Может лучше ftp?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:31 04-09-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