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

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

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

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    Kirillhome



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ykidia
    Есть засады:
    1) mountvoll - не вывел мне информацию о виртуальном приводе (реального - нет, проверить не могу).
    2) mountvoll - не вывел мне информацию о подмепленном сетевом диске (т.е. net use * \\ресурс\шара - Диск z cейчас подключен, смотрю через mountvoll - нет ничего).

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 22:28 27-01-2010
    den06051979



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

    Цитата:
    попробуй переставить их в начало  
     
    Код:
    start /B /NORMAL "C:\Program Files\SAM CoDeC Pack\Players\MPCHC\mpc-hc.exe"  /play /fullscreen  "D:\TV+\10.2009\10.2009_disk_D.m3u"

    Так тоже не работает!
    Был вариант с кавычками. Мне предлагали кавычками регулировать параметры, но я так и не смог.
     
    Добавлено:

    Цитата:
     
    попробуй переставить их в начало  
     
    Код:  
    start /B /NORMAL "C:\Program Files\SAM CoDeC Pack\Players\MPCHC\mpc-hc.exe"  /play /fullscreen  "D:\TV+\10.2009\10.2009_disk_D.m3u"
     
    Так тоже не работает!  
    Был вариант с кавычками. Мне предлагали кавычками регулировать параметры, но я так и не смог.

    Может кому пригодится. Вот правильный вариант:
    start /B /NORMAL "" "C:\Program Files\SAM CoDeC Pack\Players\MPCHC\mpc-hc.exe" "D:\TV+\2010.01\2010.01_disk_D.m3u" /play /fullscreen"

    Всего записей: 21 | Зарегистр. 21-12-2005 | Отправлено: 06:25 28-01-2010
    BumerangII



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

    Цитата:
    Добавлено:
    BumerangII  
     
    Код:
    find "10.3.52.36"< %windir%\system32\drivers\etc\hosts && echo Found!
     

     
    попробывал не работает
    при вот таком
    Код:
    @echo off
    find "10.3.52.3"< %windir%\system32\drivers\etc\hosts && goto test
    echo Not found
    :test
    echo found

     
    мне нужно проверку делать. В зависимости от результата выполнять разные решения

    Всего записей: 88 | Зарегистр. 14-12-2005 | Отправлено: 10:03 28-01-2010 | Исправлено: BumerangII, 10:05 28-01-2010
    wolf0425



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

    Цитата:
    попробывал не работает  
    а почему у меня работает?
    проверь глазками - find "10.3.52.3"< %windir%\system32\drivers\etc\hosts  что нибудь у тебя находит?
     
    проверка, кстати, гнилая - строка с "10.3.52.3" вполне может присутствовать, но надо бы проверять что она не комментарий
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 10:30 28-01-2010 | Исправлено: wolf0425, 10:32 28-01-2010
    BumerangII



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

    Всего записей: 88 | Зарегистр. 14-12-2005 | Отправлено: 11:28 28-01-2010
    vb96



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброго дня!
     
    Мастера, помогите плиз! Вот фрагмент батника, с которым я чего-то затупил:
     
    for /R "%DP%" %%F in (*.*) do %IFNOT% (
       set Tail=%%~dpF
       set Tail=!Tail:%DP%=!
       for /F "usebackq delims=" %%S in (%File%) do (
          set Str=%%S
          if not "!Tail!"=="" set Str=!Str:!Tail!=!
          echo "!Str!""!Tail!"
    ...
     
    Не пашет последний set. По смыслу - из строки Str надо удалить строку Tail.
    Например: перед этим присвоением Str = abc\defg\hijk и Tail = abc\
                     в результате Str = defg\hijk
    Обратите внимание, выше есть аналогичное присвоение для Tail, которое работает как надо. Здесь же проблема, как я понимаю, во вложенности !
    Так как бы все-таки выкрутиться?

    Всего записей: 3 | Зарегистр. 28-01-2010 | Отправлено: 13:29 28-01-2010 | Исправлено: vb96, 13:50 28-01-2010
    Kirillhome



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    vb96
    А что такое %IFNOT%??? Что такое %DP%??? Что такое %File%???
    Мне вот эта конструкция .. не очень понятна: set Tail=!Tail:%DP%=!  
    Приведи полный текст и логику...
     
    На сколько я помню, такая конструкция Str=!Str:!Tail!=! - не должна работать, в отличии от set Tail=!Tail:%DP%=!  (хотя последнюю всё равно не понимаю - к чему там последний знак равенства).

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 13:51 28-01-2010
    king_stiven

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

    Код:
    for /R "%DP%" %%F in (*.*) do %IFNOT% (
       set Tail=%%~dpF
       set Tail=!Tail:%DP%=!
       for /F "usebackq delims=" %%S in (%File%) do (
          set Str=%%S
          if not "!Tail!"=="" call fgh
             ...
      )
    )
    goto :eof
    fgh
    set Str=!Str:%Tail%=!
    echo "!Str!""%Tail%"

    без проверки

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 13:57 28-01-2010
    vb96



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

    Цитата:
    А что такое %IFNOT%??? Что такое %DP%??? Что такое %File%???  
    Мне вот эта конструкция .. не очень понятна: set Tail=!Tail:%DP%=!  
    Приведи полный текст и логику...  

    Полный текст изрядно великоват будет, да и не влияет. В %IFNOT% приходит переменная последовательность условий какие файлы (%%F) в цикле обрабатывать, а какие сразу на фиг. В %DP%, соответственно, полный стартовый путь. В %File% - файл, из которого берем строки (%%S).
     

    Цитата:
    На сколько я помню, такая конструкция Str=!Str:!Tail!=! - не должна работать, в отличии от set Tail=!Tail:%DP%=!  (хотя последнюю всё равно не понимаю - к чему там последний знак равенства).

    Логика же простая. В Tail=!Tail:%DP%=! из полного пути к обрабатываемому файлу удаляем полный стартовый. Остается строка вида "имя_поддиректории\...\имя_файла" (без кавычек). Во вложенном же цикле, из каждой строки S (а в них тоже имена файлов с путями, относительными к стартовому) надо удалить аккурат этот относительный хвостик Tail. Вот собссно.
    Я и сам понимаю, что Str=!Str:!Tail!=! тут неверно, вопрос в том, чем ее заменить.  
     
    Добавлено:
    king_stiven
     
    Ага, ну точно!
    Огромное спасибо!!
    Что-то я и впрямь затупил. Интересно только, а вот без процедуры оно похоже никак не решаемо что-ли?

    Всего записей: 3 | Зарегистр. 28-01-2010 | Отправлено: 14:33 28-01-2010 | Исправлено: vb96, 15:13 28-01-2010
    king_stiven

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

    Цитата:
     а вот без процедуры оно похоже никак не решаемо что-ли?

    В твоём виде никак. Или просмотри последние 4 страницы мои сообщения там было считали каталоги от корня используя разделитель \

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 15:41 28-01-2010 | Исправлено: king_stiven, 15:42 28-01-2010
    Ykidia



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

    Цитата:
    Есть засады:  
    1) mountvoll - не вывел мне информацию о виртуальном приводе (реального - нет, проверить не могу).  
    2) mountvoll - не вывел мне информацию о подмепленном сетевом диске (т.е. net use * \\ресурс\шара - Диск z cейчас подключен, смотрю через mountvoll - нет ничего).

    Интересно.
    1) С реальным все должно быть нормально, а с виртуальным - да и фиг с ним.
    2) Подключенные сетевые диски можно посмотреть/подключить/удалить при помощи net use. Только у меня при просмотре подключенного диска M: командой net use M: выводится такая инфа:

    Код:
    Локальное имя     M:
    Удаленное имя     \\Server\M
    Тип ресурса       Диск
    Состояние         OK
    Открыто           2
    Подключено        1
    Команда выполнена успешно.

    Как мне присвоить переменной значение удаленного имени ("\\Server\M") ?

    Всего записей: 242 | Зарегистр. 03-03-2005 | Отправлено: 16:01 28-01-2010 | Исправлено: Ykidia, 16:09 28-01-2010
    Kirillhome



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

    Цитата:
    Как мне присвоить переменной значение удаленного имени ("\\Server\M") ?

    К примеру - так:

    Код:
     
    @echo off
    Set Drive_E=""
    for /F "tokens=3" %%a in ('net use E: ^2^>nul^|findstr "\\"') do (Set Drive_E=%%a)
    if NOT %Drive_E%=="" (
       net use E: /DELETE >nul
    )
     

     
    Добавлено:
    vb96

    Цитата:

    Цитата:
    А что такое %IFNOT%...

    ...В %IFNOT% приходит переменная последовательность условий какие файлы (%%F) в цикле обрабатывать, а какие сразу на фиг.

    Читаю help, вижу

    Цитата:
    FOR /R [[диск:]путь] %переменная IN (набор) DO команда [параметры]

    Честно - просто не понимаю, как в данном случае работает команда

    Цитата:
    for /R "%DP%" %%F in (*.*) do %IFNOT% (.....  

    Поэтому и попросил пример (в том числе - и для самообразования ).
     
     
     

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 20:03 28-01-2010 | Исправлено: Kirillhome, 20:11 28-01-2010
    vb96



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

    Цитата:
    Честно - просто не понимаю, как в данном случае работает команда  
     
    for /R "%DP%" %%F in (*.*) do %IFNOT% (.....  
     
    Поэтому и попросил пример

     
    Пример? Да не вопрос .
     
    Одним из параметров моего батника является строка с набором расширений файлов, которые обрабатывать не надо. Например "jpg|gif|png|ico". Разделителем служит исключительно |. А по тексту так:

    Код:
     
    ...
    set IFNOT=if not "%%F"==""  
    ...
    call :ExtList "%~3"
    ...
    :ExtList
    for /F "tokens=1* delims=|" %%J in (%1) do (
       set IFNOT=!IFNOT!if /I not "%%~xF"==".%%J"  
       if not "%%K"=="" call :ExtList "%%K"
    )
    exit /b
     

    Т.е. банальная рекурсивная процедурка накапливания условий. Переменная F - для того цикла, где %IFNOT% и проверяется.

    Всего записей: 3 | Зарегистр. 28-01-2010 | Отправлено: 21:34 28-01-2010 | Исправлено: vb96, 21:35 28-01-2010
    Maikl_relax

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Kirillhome
    Мужчины, во-первых спасибо. Только руки дошли вдумчиво проделать.
    Но не работает как надо к сож =(
     
    Делаю так  (тренируясь на мышах):

    Код:
    rd /q/s "F:\NETSHATRE\1\NEW_STRU" 2>nul  
    for /f "delims=" %%a in (' dir /b/s/a:d "F:\NETSHATRE\1\*NEW_STRU" ') do (if "%%~nxa"=="NEW_STRU" (echo "%%~fa"))

     
    Сносится только папка  

    Код:
    F:\NETSHATRE\1\NEW_STRU

    а мне надо

    Код:
    F:\NETSHATRE\1\1\NEW_STRU
    F:\NETSHATRE\1\2\NEW_STRU
    F:\NETSHATRE\1\3\NEW_STRU
    и т.д.
    F:\NETSHATRE\1\N\NEW_STRU

     
    а так же  

    Код:
    F:\NETSHATRE\1\2\1\NEW_STRU
    F:\NETSHATRE\1\2\2\NEW_STRU
    F:\NETSHATRE\1\2\3\NEW_STRU
    и т.д.
    F:\NETSHATRE\1\2\N\NEW_STRU

     
    Может плохо объяснил...
    Лежат базы 1С их N-штук в F:\NETSHATRE\1\

    Код:
    F:\NETSHATRE\1\База01
    F:\NETSHATRE\1\База02
    F:\NETSHATRE\1\База03
    F:\NETSHATRE\1\База04
    F:\NETSHATRE\1\База05

    и т.д.
     

    Код:
    F:\NETSHATRE\1\зарпалта\База01
    F:\NETSHATRE\1\зарпалта\База02
    F:\NETSHATRE\1\зарпалта\База03
    F:\NETSHATRE\1\зарпалта\База04
    F:\NETSHATRE\1\зарпалта\База05

     
    Вообще говря есть еще  
    F:\NETSHATRE\2\
    но для этого просто повторю работающий шаблон F:\NETSHATRE\1\ так как на F:\NETSHATRE напускать боязливо.
     
    В каждой База01, База02, База03.... есть искомая папка NEW_STRU - ее от и надо понести со всем содержимым:

    Код:
    F:\NETSHATRE\1\База01\NEW_STRU  
    F:\NETSHATRE\1\База02\NEW_STRU  
    ....
    F:\NETSHATRE\1\зарпалта\База01\NEW_STRU  
    F:\NETSHATRE\1\зарпалта\База02\NEW_STRU  
    ....

     
    =)
     
    ЗЫ Вот эхо скрипта

    Код:
    F:\NETSHATRE\Temp\->del.bat
     
    F:\NETSHATRE\Temp\->rd /q/s "F:\NETSHATRE\1\NEW_STRU"   2>nul
     
    F:\NETSHATRE\Temp\->for /F "delims=" %a in (' dir /b/s/a:d "F:\NETSHATRE\1\*NEW_STRU" ') do (if "%~nxa" == "NEW_STRU" (echo "%~fa" ) )
     
    F:\NETSHATRE\Temp\->(if "NEW_STRU" == "NEW_STRU" (echo "F:\NETSHATRE\1\1\NEW_STRU" ) )
    "F:\NETSHATRE\1\1\NEW_STRU"
     
    F:\NETSHATRE\Temp\->(if "NEW_STRU" == "NEW_STRU" (echo "F:\NETSHATRE\1\2010-01-19\NEW_STRU" ) )
    "F:\NETSHATRE\1\2010-01-19\NEW_STRU"
     
    F:\NETSHATRE\Temp\->(if "NEW_STRU" == "NEW_STRU" (echo "F:\NETSHATRE\1\3\NEW_STRU" ) )
    "F:\NETSHATRE\1\3\NEW_STRU"
     
    F:\NETSHATRE\Temp\->(if "NEW_STRU" == "NEW_STRU" (echo "F:\NETSHATRE\1\4\NEW_STRU" ) )
    "F:\NETSHATRE\1\4\NEW_STRU"
     
    F:\NETSHATRE\Temp\->(if "NEW_STRU" == "NEW_STRU" (echo "F:\NETSHATRE\1\5\NEW_STRU" ) )
    "F:\NETSHATRE\1\5\NEW_STRU"

    Всего записей: 8 | Зарегистр. 27-01-2010 | Отправлено: 11:48 29-01-2010 | Исправлено: Maikl_relax, 12:00 29-01-2010
    Kirillhome



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Maikl_relax
    Судя по эху - у тебя выводится весь список.

    Цитата:
    F:\NETSHATRE\1\1\NEW_STRU
    F:\NETSHATRE\1\2010-01-19\NEW_STRU
    F:\NETSHATRE\1\3\NEW_STRU
    F:\NETSHATRE\1\4\NEW_STRU
    F:\NETSHATRE\1\5\NEW_STRU

    Или нет?
     
    В чём заковыка то?

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 17:44 29-01-2010
    Ykidia



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот, увидел решение схожей задачи здесь, однако мне и этого мало. К примеру, я решил попробовать искать номер диска для diskpart не по размеру (хотя увидел где-то, как можно сравнивать большие числа - надо просто "откусывать" от строки с числом младшие разряды, а потом сравнивать их как обычно), а по типу - оказалось, diskpart показывает тип носителя, если, выбрав диск, дать команду detail disk. То есть, скрипт для diskpart

    Код:
    select disk 0
    detail disk

    позволяет узнать тип носителя, вот у меня результат вывода на одной из машин (без RAID'а):

    Код:
    Microsoft DiskPart, версия 5.1.3564
     
    (С) Корпорация Майкрософт (Microsoft Corp.), 1999-2003.
    На компьютере: P4-KONST
     
    Выбран диск 0.
     
    ST3160827AS
    Код диска:8F800000
    Тип      : IDE
    Шина     : 1
    Конечный : 0
    LUN ID   : 0
     
      Том    ###  Имя  Метка        ФС     Тип         Размер   Состояние  Сведения
      ----------  ---  -----------  -----  ----------  -------  ---------  --------
      Том 1     C   SYS          NTFS   Раздел        39 GB  Исправен   Системны
      Том 2     E   DATA         NTFS   Раздел        64 GB  Исправен
     
    Завершение работы DiskPart...

    А на машине с RAID'ом на диске 1 тип диска 1 показывает соответственно "RAID". И у меня два вопроса.
     
    1) Хотел красиво сделать как по приведенной ссылке, передать diskpart'у вышеуказанные две строчки посредством echo в цикле for с поиском строки "RAID". Но на такие строки

    Код:
    for %%i in (0 1 2 3 4) do (
        for /f "tokens=3" %%a in ('("@echo select disk %%i&@echo detail disk")^|diskpart >nul^|findstr "RAID"') do (set raiddisknumber=%%i)
        set raiddisknumber
    )
     

    ругается, когда я добавляю ("@echo select disk %%i&@echo detail disk") вместо чего-нибудь простого. Как правильно объединить и вообще есть ли такая возможность? Или придется передавать эти пару строк через файл скрипта для diskpart?
     
    2) Выше показан пример вывода команды detail для diskpart. Как можно видеть, если есть тома, то выводятся тома и их названия меток. Таким образом, если есть метка, совпадающая с "RAID", строка "RAID" будет найдена, даже если тип носителя не-RAID. Как мне ограничить поиск нужной строки только в конкретном месте (например, до строки "LUN ID" или до строки "---")?

    Всего записей: 242 | Зарегистр. 03-03-2005 | Отправлено: 17:53 29-01-2010 | Исправлено: Ykidia, 18:10 29-01-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ykidia
    for %%i in (0 1 2 3 4) do (
        echo select disk %%i> "%temp%\1.txt"
        echo detail disk>> "%temp%\1.txt"
        for ...    ('DiskPart /S "%temp%\1.txt" ^| findstr "RAID"')  ...
     
    Добавлено:

    Цитата:
    Как мне ограничить поиск нужной строки только в конкретном месте (например, до строки "LUN ID" или до строки "---")?

    findstr /c:": RAID"

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 22:52 29-01-2010 | Исправлено: king_stiven, 23:24 29-01-2010
    takt03

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет. Короче задача такая, как узнать свой ип в интернете через цмд. Просто провайдер использует динамическую раздачу ИП а за статистическую надо бабосы плотить. Мне надо чтоб допустим если произойдёт отключение от нэта, мой ком мне выслал новый свой ип. И высылал каждый раз когда он у него меняется. В принципе отсылку я сам могу сделать а вот как из цмд узнать свой ип я не знаю.  
     

    Всего записей: 17 | Зарегистр. 16-01-2010 | Отправлено: 03:23 30-01-2010 | Исправлено: takt03, 03:40 30-01-2010
    wolf0425



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

    Цитата:
    Просто провайдер использует динамическую раздачу ИП а за статистическую надо бабосы плотить.
    ты уже проверил, что твой ip доступен снаружи? В смысле - что тебе делают динамический внешний ip, а не динамический ip в локалке и выход в интернет через NAT?
     
     

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

    Код:
    For /f %%a in ('wget -q -O - http://www.netikus.net/show_ip.html ') do set "newip=%%a"

     
    или не заморачивайся с отсылкой ip, а зарегистрируй домен на http://www.no-ip.com/ и поставь ихнего клиента - будешь по имени на комп заходить, dns обновляют ~ раз в полчаса.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 04:52 30-01-2010 | Исправлено: wolf0425, 04:57 30-01-2010
    senovr

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть задача.  
    На диске существует папка с логами ( например D:/data/
    в ней существует большое количество подкаталогов с разным уровнем вложенности.
    В любом случае, на последнем уровне структура папок будет следующая:
    D:/data/много вложенных папок/ last folder
    в last folder содержатся следующие файлы:
    log_full. csv
    log_short.csv
    и так же папка errorlog, в которой содержатся логи об ошибках ( файлы типа log1.txt, log2.txt и т.д)
    Что необходимо сделать:  
    а) заархивировать папку errorlog в errorlog.7z ( оставить в той же самой last folder), после архивации исходную папку удалить.
    б) заархивировать файл log_full.csv в log_full.7z , и так же удалить исходный несжатый лог.  
    Затем, обойти все папки на предмет наличия этих файлов ( и папки errorlog) и везде где нашли- выполнить такую же архивацию.  
    Вот что пока есть :  
    SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
    echo off
    echo Please wait...
    mode con codepage select=1251 > nul
    Set StartPath=%~dp0
    for /r %%d in (.) do (
        cd %%d
    echo %~dp0
     
    pause
        for %%f in (*full.csv) do (  
    If %%d
    echo %%d%%f>> file3.txt
        echo  %%d
        echo  %%f  
     
    pause
        %StartPath%_Tools\7za.exe a -mx=9 -md=32m  "%%d\log_full.7z" @from3.txt
     
    )    
    pause
         
    )
    Этот батник должен архивировать только log_full, а что сделать с папкой?  
    совсем себе голову сломал...  

    Всего записей: 10 | Зарегистр. 02-09-2006 | Отправлено: 18:53 30-01-2010
       

    Страницы: 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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru