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

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

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

vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    Nagual



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

    Цитата:
    Насколько я понял задачу:

    правильно понял, я немного не так описал
    в общем все работает, только перечисленные пути должны быть абсолютными
    иными словами, вывести все подкаталоги указанного каталога, используя команду dir/b/s/a:d D
    при этом вывод осуществляется как список, содержащий вывод в каждой строке (разделитель — перевод строки)
    а нужно, чтобы вывод был в одной строке и разделителем служил бы знак ;

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 15:27 29-04-2008
    Joolz

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

    Цитата:
    хм... ответа я видимо не дождусь

    Суть в том, что по сети эта ветка реестра не доступна. Доступны лишь HKLM и HKU.
     
    Упс. Тут же psexec. У меня все сработало, только я путь к выгружаемому файлу прописал полный.

    Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 15:27 29-04-2008 | Исправлено: Joolz, 15:35 29-04-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tipulatoid
    Код:
    @echo off
    setlocal enabledelayedexpansion
    for /f "delims=" %%a in ('dir /b /s /a:d D') do call :label1 %%a
    echo %var:~1%
    goto
    :eof
     
     
    :label1
    if %~1=="" goto
    :eof
    set symbol=0
    set foldernum=0
     
    :next
    set
    stroka=%~1
    set /a symbol+=1
    if "!stroka:~%symbol%,1!"=="\" set /a foldernum+=1
    if "!stroka:~%symbol%,1!" NEQ "" goto next
    set /a foldernum+=1
    for %%a in (%~1) do set var=!var!;%%a
    goto
    :eof
    спасибо

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 15:35 29-04-2008
    Tipulatoid



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

    Код:
    @echo off
    setlocal enabledelayedexpansion
    for /f "tokens=*" %%a in ('dir /b /s /a:d') do set var=!var!;%%a
    echo %var:~1%

    Это для абсолютных путей

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 15:38 29-04-2008 | Исправлено: Tipulatoid, 15:41 29-04-2008
    bmax

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А по моемУ вопросу, проблема в секундах или в чем-то еще?  Возможно ли решение?
    Подскажите кто знает, спасибо

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 15:45 29-04-2008
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bmax
    Да, лично я не в курсе как секунды узнать.

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 16:14 29-04-2008
    Nagual



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

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 16:18 29-04-2008
    bmax

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tipulatoid
    Понятно, подождем может кто натолкнет на мысль, или подскажет  как еще можно реализовать выборку соответствующего файла.

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 16:25 29-04-2008
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mrGizmik
    Этот вопрос был несколько страниц назад - нужно указать, что передается двоичный файл, по умолчанию ASCI.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:32 29-04-2008
    smbsmb

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как сделать такое:
    У меня есть два VPN-соединения с инетом, которые я подключаю одновременно.
    Мне нужно задать, с каким сайтами я буду работать через одно соединение,
    а с какими - через другое.
    Последний по очереди VPN прописывает маршрут по умолчанию,
    и все идет через него.
    Но если выполнить команду, например для IP-адресов Яндекса
    route add 213.180.204.0 mask 255.255.255.0 10.16.57.225
    то тогда на Яндекс ходит через один VPN, а на все другое - через другой.
     
    Проблема в том, что IP-адрес выдается VPN-сервером иногда разный
    (в этот раз был 10.16.57.225).
     
    Откуда удобнее получить адрес в bat-файле?
    Из вывода команды ipconfig неудобно, по-моему.
     
    Вообще, правильно ли я подхожу к решению вопроса?

    Всего записей: 410 | Зарегистр. 24-09-2002 | Отправлено: 16:47 29-04-2008
    bmax

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Еще спрошу касательно моего вопроса на предыдущей странице почему может некорректно отрабатываться ситуация:
     
    more +3 "D:\2\%%f" | findstr "qwe rty uio" 1>nul || (  
    copy /y /D "D:\2\%%f" "D:\3\17%date:~0,2%%count%.dvc"
     
    т.е. например последовательность "rty" в файле присутствует а он все равно копируется  

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 16:53 29-04-2008
    Valdon



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Чето затупил... Как по ECHO вывести то что в консоли выводится набирая:time /t, т.е. как подцепить ключ /t ?
    ЗЫ: Пока так делаю: ECHO %TIME:~0,5%

    Всего записей: 415 | Зарегистр. 25-07-2005 | Отправлено: 16:54 29-04-2008
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Valdon
    Ты немного спутал  
    оператор Time
    и предопределенную переменную %Time%
     
    Time /T можно использовать без ECHO

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:20 29-04-2008
    Valdon



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel, ладно, как попроще тогда в ECHO добавить оператор Time /T ?
    For /F %%i In ('Time /T') DO Set T=%%i
    Echo %T%  
    Может так?

    Всего записей: 415 | Зарегистр. 25-07-2005 | Отправлено: 17:38 29-04-2008 | Исправлено: Valdon, 17:53 29-04-2008
    mrGizmik

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

    Всего записей: 2 | Зарегистр. 29-04-2008 | Отправлено: 17:52 29-04-2008
    Leopold70

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не совсем дружу с програмированием, помогите, обращаюсь к светлым умам.
    ... есть папочка ORG в ней около двух сот папочек с неизвестным именем,
    в в каждой из тех папочек есть под папочки по дате в формате DDMM-день месяц
     
    D:\ORG\Неизвестное Имя 1\DDMM\
    ..........................
            \Неизвестное Имя 200\DDMM\
     
    в эти папочки попадают файлы *.dbf; *.txt. Требуется из каждой папочки имя которой
    соответствует текущей дате DDMM  архивировать *.dbf; *.txt. в папочку C:\mail\ имя архив, должен получить от имени файлов, если 256ORG.dbf то архив 256ORG.ARJ. и по месту нахождения файлов в папках DDMM должен остаться такой же архив.
     
    Многие задачи решались с помощью Вашего форума, аналога этой не нашел
    помогите решить эту задачку с помощью Батника.

    Всего записей: 2 | Зарегистр. 26-12-2007 | Отправлено: 18:04 29-04-2008
    Valdon



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Знаю как получить TimeZone на удаленном компе(Comp2):
    WMIC /NODE:"Comp2" OS GET CurrentTimeZone
    Может ктонить подскажет, можно ли через WMIC, изменить TimeZone удаленного компа?

    Всего записей: 415 | Зарегистр. 25-07-2005 | Отправлено: 20:22 29-04-2008
    Dantis

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
        Привет всем =). У меян появилось еще пара вопросов...
     
    1) Как Запустиьть с Помощью Батника  Службу??  ( имя ее Diskeeper )  
    2) Как убить процесс   avp.exe (Антивирус Карсперского 6.0 ) и oupost.exe (Фаер Вол  OutPost 4.0)  (через диспетчер задач я их убить не могу =( )  
    3)
    Как запутить программы с помощью батника.&
     
    пишу  start F:\Проги\Norton WinDoctor 2007\WINDOC.EXE       и не работает.... похоже запинается на русских буквах и пробелах =(  
     
    Мне надо запустить пару файлов:  
     
    F:\Проги\Norton WinDoctor 2007\WINDOC.EXE  
    F:\Проги\Diskeeper Corporation\Diskeeper\Diskeeper.msc
    F:\Проги\VitSoft\Vit Registry Fix\Vit Registry Fix 4.2.exe
    F:\Проги\CCleaner2.03\CCleaner.exe
     
     
    PS/  просто при чистке компа   (Реестра\ дефрагментации дисков)  я закрываю все процессы которые можно закрыть.и запускаю эту службу (в ручную) и запускаю проги.... хотелось бы  автоматизировать этот процесс.

    Всего записей: 26 | Зарегистр. 25-03-2008 | Отправлено: 20:49 29-04-2008
    AdepTcs



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

    Цитата:
    Проверь Windows\System32 директорию. Твой reg файл должен быть там.

     
    в том то и дело, что комадна вообще не отрабатывается, то есть файлик reg вообще не создается (даже указывая полный путь создания файла c:\ps.reg )

    Всего записей: 4 | Зарегистр. 25-04-2008 | Отправлено: 03:15 30-04-2008
    bmax

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    На всякий случай спрошу еще раз, может кто-нибудь подскажет, или скажет куда еще можно обратиться за помощью
     
    Помогите пожалуйста поправить код:  
    Необходимо найти последний файл в папке "D:\1" и определить дату его создания(вплоть до секунд).  
    Затем в папке "D:\2" найти найти файл созданный в это же время и при условии что в этом файле не присутствует последовательноть символов "qwe" или "rty" или "uio" он копируется в папку "D:\3"

    Цитата:
    @echo off  
    FOR /f "tokens=*" %%i in ('dir /b /s /a-d "D:\3\*.*"') do set /a count+=1  
    IF EXIST D:3\*.* set "count=0%count%" ELSE  
    set "count=00%count%"  
    set "count=%count:~-2%"  
    for /f "tokens=*" %%c in ('dir "D:\1\*.*" /o:-d /t:c /b /a:-d') do (  
     
     - определить дату создания последнего файла(с секундами)???????  
     
     - найти в папке D:\2 файл с такой же датой создания  и если выполняется условие?????????  
     
    more +3 "D:\2\%%f" | findstr "qwe rty uio" 1>nul || (  
    copy /y /D "D:\2\%%f" "D:\3\17%date:~0,2%%count%.dvc"  
    goto :eof  
    )  
    )

    Спасибо!

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 09:19 30-04-2008
       

    Страницы: 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-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru