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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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-файлах 6
(часть 1, часть 2, часть 3, часть 4, часть 5)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

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

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    metrim

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir спасибо. Жаль что без комментариев программа, но попробую разобраться.
    На первый взгляд - генерируется временный файл из которого потом вычищются наличествующие файлы/ссылки?
     
    Кстати говоря-еще одно:
    путь к файлу (ссылка) формируется следующим образом:
    http://домен/1-4цифры/5,6цифры/весь номер
    т.е. для 04562312 это http://домен/0456/23/04562312.файл
    Как будут выглядеть строковые операторы для формирования такой строки?

    Всего записей: 109 | Зарегистр. 05-12-2002 | Отправлено: 13:12 26-02-2009
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Herissen
    mirror.vbs
    Код:
    do    ' начало цикла
    cmd="robocopy "&Chr(34)&"ЧТО"&Chr(34)&" "&Chr(34)&"КУДА"&Chr(34)&" /mir"
    CreateObject("WScript.Shell").Run cmd,0
    wscript.sleep 3600000    ' Ожидание 1 час (параметр меняем по усмотрению)
    ' wscript.sleep 60000    ' Ожидание 1 минута
    ' wscript.sleep 10000    ' Ожидание 10 секунд
    loop    ' зациклить

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 13:35 26-02-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    metrim
    set url=http://домен/%nomer:~0,4%/%nomer:~4,2%/%nomer%.файл

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 13:47 26-02-2009
    Maza_Faka



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

    Цитата:
    как батником определить интернетовский адрес компа

    Public IP? Попробуй так:

    Код:
     
    @Echo Off
     
    Set "TmpFile=%TEMP%\~tmp"
     
    Del /F /Q "%TmpFile%">Nul 2>&1
    wget -O"%TmpFile%" "http://checkip.dyndns.org/?rnd1=1&rnd2=2" 2>Nul  
     
    For /F "Tokens=6 Delims= " %%A In (%TmpFile%) Do Set IPAdress="%%A"
     
    Echo My Public IP-adress: %IPAdress:~1,-15%
    Del /F /Q "%TmpFile%"
     


    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:41 26-02-2009
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Только IP, ничего лишнего:
    http://whatismyip.com/automation/n09230945.asp
    http://www.netikus.net/show_ip.html
     
    Добавлено:
    Nagual
    Да там do...loop и не нужен, просто стартануть robocopy скрытно c параметрами /MIR /MOT:60
    Вместо 60 - кол-во минут, через которые будет осуществляться синхронизация.

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 15:06 26-02-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    спасибо за ссылочки. только /automation/n09230945.asp как-то совсем стремно выглядит - ее не отменят/переименуют через месяц?
    (что сам сайт не закроется - это надеяться можно)

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 16:09 26-02-2009
    igor_andreev

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

    Цитата:
    ее не отменят/переименуют через месяц?

    Да не должны, этим адресом многие пользуются, специально сделали такую страничку, где ничего лишнего. Просят только не сильно часто на нее долбиться, раз в пять минут
    http://forum.whatismyip.com/f14/our-automation-rules-t241/

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 16:27 26-02-2009
    sergij

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

    Всего записей: 39 | Зарегистр. 14-03-2006 | Отправлено: 17:52 26-02-2009 | Исправлено: sergij, 17:57 01-03-2009
    Dimosik_parovozik

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день! Хотелось бы узнать следующее: как запустить последовательно 3 программы, позже дождатся окончания последней из запусщенных и убить 2 программы запущенные рание?
    Например:
    программа 1: c:\programfiles\skype\skype.exe
    пргорамма 2: c:\programfiles\minimizer\min.exe
    программа 3: d:\game\quake3.exe +(дополнительные параметры)
    -----
    Выходишь с quake3.exe и автоматом закрываются выше указанные программы
    Заранее спасибо!
    P.s. пауза между програм1,2,3 например 2 секунды

    Всего записей: 111 | Зарегистр. 30-10-2006 | Отправлено: 17:58 26-02-2009
    sergij

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Попробуй так и дополни чем захочешь
    м если захочешь избавится от окна CMD то прийдется стартовать через CMD-1
    утилиту hidcon.exe легко найдешь
     
    CMD-1
       

    Код:
    start hidcon.exe CMD-2

     
    CMD-2
     

    Код:
    start /min C:\"Program Files"\Skype\Phone\Skype.exe
    start C:\"Program Files"\minimizer\min.exe
    start /wait  d:\game\quake3.exe
    TASKKILL /F /IM skype.exe  /T  
    TASKKILL /F /IM min.exe  /T
     

     

    Всего записей: 39 | Зарегистр. 14-03-2006 | Отправлено: 18:55 26-02-2009 | Исправлено: sergij, 02:03 27-02-2009
    zzxx1488

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    start /min skype.exe
    это чтобы вторую прогу, как я понял - минимайзер, не запускать

    Всего записей: 62 | Зарегистр. 04-10-2008 | Отправлено: 19:12 26-02-2009 | Исправлено: zzxx1488, 19:12 26-02-2009
    K_AHTOH



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425
     
    Цитата:
    что с твоей точки зрения должен делать твой чудный батник?
    своими словами

    Пропускать обработку файла который создан сегодня (по аналогии удаления старых файлов)

    Всего записей: 155 | Зарегистр. 20-10-2006 | Отправлено: 19:25 26-02-2009
    Dimosik_parovozik

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Дело в том что программа минимайзер никак не связана со скайпом, она дает возможность сварачивать quake, и будут ли какие изменения всвязи с этим?

    Всего записей: 111 | Зарегистр. 30-10-2006 | Отправлено: 23:59 26-02-2009
    Elroir



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

    Цитата:
    На первый взгляд - генерируется временный файл из которого потом вычищются наличествующие файлы/ссылки?

    Да, именно так. Сначала создается файл со всеми возможными ссылками (all_range.txt), потом создается файл с тем, что уже есть на диске (local.txt), а потом в файл download.txt записываются все ссылки из первого файла, которые не содержат названий файлов из pre.txt и из local.txt.
     

    Цитата:
    Жаль что без комментариев программа, но попробую разобраться.
    путь к файлу (ссылка) формируется следующим образом:  
    http://домен/1-4цифры/5,6цифры/весь номер  
     
     
     

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    :: Вносим в переменную то, что было передано аргументом ком. строки
    set "start=%~1"
    :: Определяем вспомогательную переменную для подсчета кол-ва ведущих нулей
    set "position=0"
    :: В следующем блоке, находим количество ведущих нулей и  
    :: определяем переменную prefix с этими нулями
    :find_prefix
    if "!start:~%position%,1!"=="0" (
    set "prefix=!prefix!0"
    set /a "position+=1"
    goto :find_prefix
    )
    :: в переменную "_start" записываем начальный индекс без ведущий нулей  
    set "_start=!start:~%position%!"
    :: в переменную "_end" записываем конечный индекс  
    set /a "_end=_start+100000"
    :: стираем файл "all_range.txt" (если он существует) и создаем его заново - со всеми возможными ссылками
    del /q all_range.txt 2>nul & for /l %%a in (%_start%,1,%_end%) do (
    :: прибавляем ведущие нули к индексу
    set "whole_number=%prefix%%%a"
    :: записываем полную ссылку в файл
    echo http://domen/!whole_number:~0,4!/!whole_number:~4,2!/!whole_number!.file>>all_range.txt
    )
    :: стираем файл "local.txt" (если он существует) и создаем его заново - со всеми уже существующими файлами
    del /q local.txt 2>nul & for /f "tokens=*" %%a in ('dir /b "C:\Temp\Downloaded\*.file"') do echo %%~nxa>>local.txt
    :: фильтруем all_range.txt
    type all_range.txt | findstr /v /g:pre.txt | findstr /v /g:local.txt>download.txt
    del /q all_range.txt 2>nul
    del /q local.txt 2>nul
     
     

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:14 27-02-2009
    wolf0425



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

    Цитата:
    Пропускать обработку файла который создан сегодня (по аналогии удаления старых файлов)  

    просто меня очень смущает в той строке батника, что имяфайла - внешний парамер батника,
    а обработка для имяфайла вызывается столько раз в скольки строках лога дата модификации файла прописанного в шестой колонке лога не совпадает с текущей но сама строка содержит подстроку имяфайла.
     
    если нужно проверить %1 на текущую дату модификации - зачем накручивать построчный разбор лога, и наоборот...

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 04:03 27-02-2009 | Исправлено: wolf0425, 04:18 27-02-2009
    Herissen



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    спасибо люди добрые одну часть проблемы решил ))
    теперь подскажите правельные параметры для утилиты cmdow что бы скрыть окно выполнения.
    и еще просьба как сделать так чтобы батник автоматом запускался и не был виден в диспечере задач и автозагрузке
    с уважением

    Всего записей: 12 | Зарегистр. 26-02-2009 | Отправлено: 07:05 27-02-2009
    ikif



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

    Всего записей: 164 | Зарегистр. 09-12-2006 | Отправлено: 07:29 27-02-2009
    Maza_Faka



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

    Цитата:
    подскажите правельные параметры для утилиты cmdow что бы скрыть окно выполнения


    Код:
     
    CMDOW @ /HID
    ::Ваш код...
     


    Цитата:
    чтобы батник автоматом запускался и не был виден в диспечере задач

    Ну в диспетчере по любому будет виден процесс cmd.exe, разве, что скомпилировать батник в exe-файл с каким нибудь "страшным" именем, что-то вроде svchost.exe

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:32 27-02-2009
    Herissen



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

    Цитата:
    Ну в диспетчере по любому будет виден процесс cmd.exe, разве, что скомпилировать батник в exe-файл с каким нибудь "страшным" именем, что-то вроде svchost.exe

     
    да ладно бог с ним  в деспечере ))) пусть весит.
    как сделать автозагрузку файла, но чтобы он не отображался в пункте автозагрузка

    Всего записей: 12 | Зарегистр. 26-02-2009 | Отправлено: 07:41 27-02-2009
    K_AHTOH



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Началось все отсюда
    Все работает но есть одно НО. Файл который сформирован сегодняшней датой нельзя передовать на обработку.
    Хотел сделать по аналогии удаления старых файлов, вот так:

    Код:
    for /F "tokens=1 delims=;" %%d in ('findstr /L /I /C:"%1" %logfile%')  DO  (echo %%~ti | findstr /v %date% 1>nul && call :wrk %1)

    но ничего не получилось.
    Как сделать чтобы файл сформированный сегодняшним числом не поступал в обработку?
    Вот код моего скрипта:

    Код:
     ::@echo off
    SETLOCAL ENABLEDELAYEDEXPANSION
     
    set "netdisk=M:"
    :: Outputdir - директория вывода обработанных файлов
    set "Outputdir= D:\log\"
    :: logfile.txt - файл, гда хранятся имена обработанных ранее файлов
    set "logfile=logfil.txt"
    :: Подключаем сетевой диск
    net use %netdisk% \\192.168.0.1\Tarif /user:domean\user1 123456
    If Not "!ErrorLevel!"=="0" ECHO %date:~-10% %time:~,5%  Сетевой ресурс не доступен >> %LOGFILE% goto :eof
     
    SET "SEEKIN=%netdisk%\*.tfs"
     
     
    for %%f in (!SEEKIN!) DO call :chk %%f
    :: ====== Завершение работы =====
    :: отключаем сетевой диск
    net use %netdisk% /delete /yes
    :: очистка от мусора созданного парсером  
    IF EXIST %Outputdir%*.err del %Outputdir%*.err
    IF EXIST %Outputdir%*.rm3 del %Outputdir%*.rm3
    IF EXIST %Outputdir%*.jrn del %Outputdir%*.jrn
    pause
    goto :eof
     
    :chk
    SET "NEW=1"
    for /F "tokens=1 delims=;" %%d in ('findstr /L /I /C:"%1" %logfile%')  DO  call :wrk %1
    IF "!NEW!"=="1" (
    ECHO FOUND NEW FILE %1
    D:\parser.exe -tfsfile "%1" -outdir !Outputdir!
     
    if errorlevel 0 ECHO %date:~-10% %time:~,5% %1 >> %LOGFILE%
    )
     
    :wrk
    if not "%1"=="" SET "NEW=0"  

     
    Пропустить его надо я так понимаю в этой строке:

    Код:
    for /F "tokens=1 delims=;" %%d in ('findstr /L /I /C:"%1" %logfile%')  DO  call :wrk %1

     
    Но как это сделать не пойму...
    Кстати а можно как то использовать сетевой диск так:

    Код:
    net use * \\192.168.0.1\Tarif /user:domean\user1 123456

    будет заниматься 1-я свободная буква диска. (это удобно когда сразу несколько таких батников запускаеш) Но вот как ее потом передать на обработку (буква не известна)

    Всего записей: 155 | Зарегистр. 20-10-2006 | Отправлено: 09:29 27-02-2009 | Исправлено: K_AHTOH, 09:32 27-02-2009
       

    Страницы: 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-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru