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

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

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

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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    lorents



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

    Код:
    for %%i in (.\dir1\*.*) do (
        call :print "%%~nxi" "Dir1\%%~nxi" "Dir2\%%~nxi" "Dir3\%%~nxi" "Dir4\%%~nxi" "Dir5\%%~nxi" "Dir6\%%~nxi" "Dir7\%%~nxi" "Dir8\%%~nxi" "Dir9\%%~nxi"
    )
     
    :print
    echo %1;%~z2;%~z3;%~z4;%~z5;%~z6;%~z7;%~z8;%~z9;%~z10 >>png.csv
    exit /b

    Код почему-то выдает при папке Dir9 значение 0 везде, интересно, если добавить папку Dir10, то значение - 1 и т.д.

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 14:49 19-01-2011 | Исправлено: lorents, 14:53 19-01-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    lorents
    Ты можешь напрямую обратиться только к 9 параметрам, переданным в батник/процедуру (%0 я не считаю), для использования большего количества параметров надо использовать операцию shift и соответственно переписать процедуру print для ее использования.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:54 19-01-2011
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    понятно, пойду почитаю на счет shift, спасибо.

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 15:00 19-01-2011
    MGrom



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

    Цитата:
    Цитата:
    Есть разветвленная структура папок
     
    Папки надо обходить рекурсивно? Какая все же структура папок? Они лежат где-то в одной папке или разбросаны в разных местах по всему диску?  
    Архивировать файлы во всех вложенных подпапках или только в текущей папке? Архив создавать с каким именем?

     
    Есть корневая папка, в ней ряд подпапок, в которых встречаются файлы с расширениями *.log. Нужно чтобы батник прошарил все эти подпапки, и где встречаются фалы log заархивировал их, причем архив в каждой папке создавался свой. Имя все равно, можно например по названию папки в которой он находиться.

    Всего записей: 15 | Зарегистр. 24-01-2007 | Отправлено: 15:03 19-01-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    MGrom
    файлы удалять после архивирования?

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 15:14 19-01-2011
    firsthar



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

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

    нафига ему качаться? просто проверить бы его наличие.

    Всего записей: 2683 | Зарегистр. 24-11-2005 | Отправлено: 15:22 19-01-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    MGrom
    Как-то так получилось:
    для начала установи правильно переменную pdir во второй строке - обрабатываемый каталог.

    Код:
    @echo off
    set "pdir=D:\test\1\"
     
    call:recurs "%pdir%" *.log
    goto:eof
     
    :recurs
    set "fname=%~1"
    call:getfname "%fname:~0,-1%"
    for %%a in ("%~1%~2") do (
        >nul 7z u "%~1%fname%.7z" "%~1%~2"
        echo del /f/q "%~1%~2"
        goto:next
    )
    :next
    for /d %%a in ("%~1*") do call:recurs "%%~dpnxa\" "%~2"
    exit /b
     
    :getfname
    set "fname=%~nx1"
    exit /b

    Для архивации использую 7z - должен быть доступен для запуска из ком.строки или прописать полный путь.
    Для удаления убери echo в строке  
    echo del /f/q "%~1%~2"
    Так же в случае с удалением удобнее использовать rar - у него есть опция, которая позволяет сразу удалять упакованные файлы.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 15:46 19-01-2011 | Исправлено: res2001, 17:58 19-01-2011
    MGrom



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

    Цитата:
    @echo off  
    set "pdir=D:\test\1\"  
     
    setlocal enabledelayedexpansion  
    call:recurs "%pdir%" *.log  
    goto:eof  
     
    :recurs  
    set "fname=%~1"  
    call:getfname %fname:~0,-1%  
    for %%a in ("%~1%~2") do (  
        >nul 7z u "%~1%fname%.7z" "%~1%~2"  
        echo del /f/q "%~1%~2"  
        goto:next  
    )  
    :next  
    for /d %%a in (%~1*) do call:recurs "%%~dpnxa\" "%~2"  
    exit /b  
     
    :getfname  
    set "fname=%~nx1"  
    exit /b

     
    pdir поправил на D:\Test, создал десяток подпапок.
    7z исправил на 7za консольная версия.
    Странно, первые две папки проходит на третей спотыкается с ошибкой.
    И имя архива везде пишет одно и тоже Новая.7z.
     
    D:\Test>test.bat
    del /f/q "D:\Test\Новая папка\*.log"
    del /f/q "D:\Test\Новая папка (2)\*.log"
    Непредвиденное появление: \*).

    Всего записей: 15 | Зарегистр. 24-01-2007 | Отправлено: 16:37 19-01-2011 | Исправлено: MGrom, 16:40 19-01-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    MGrom
    Не отладил на длинных именах.
    Поправил код, поставил кое-где недостающие кавычки.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:06 19-01-2011
    MGrom



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

    Цитата:
     
    Не отладил на длинных именах.  
    Поправил код, поставил кое-где недостающие кавычки.

     
    Отлично работает, будем тестировать на боевой системе )
    Спасибо!

    Всего записей: 15 | Зарегистр. 24-01-2007 | Отправлено: 17:43 19-01-2011 | Исправлено: MGrom, 17:44 19-01-2011
    InSe0F



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

    Цитата:
    InSe0F
     
    Цитата:
    никак не получается, чтобы активировалось. у меня по умолчанию параметр Использовать прокси сервер выключен - и не активируется  
    Аналогично с Автоконфигом, никак не могу найти параметр который за него отвечает  
     
     
    Попробуй так:
     
    Код:
     
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ProxyEnable" /t REG_DWORD /d 00000001 /f
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ProxyServer" /d 192.168.1.1:8080 /f
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "AutoConfigURL" /d 192.168.1.1/AutoConfig /f
     

     
    чет не совсем то что надо... надо чтобы вот так стояло http://d.pr/X2bR при этом до этого может стоять любая комбинация. никак не получается именно с подобными галочками

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 19:57 19-01-2011
    yurik86

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

    Всего записей: 84 | Зарегистр. 28-02-2008 | Отправлено: 04:20 20-01-2011 | Исправлено: yurik86, 13:29 20-01-2011
    king_stiven

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

    Цитата:
    Есть корневая папка, в ней ряд подпапок, в которых встречаются файлы с расширениями *.log.

    res2001
    Я бы так сделал, чем больше обращений к goto и call, тем меньше надёжности

    Код:
    @echo off
    set "pdir=D:\test\1\"
    cd /d %pdir%
    for /r %%i in (.) do (
        pushd %%i
        "N:\Programs\ARHIVATRORS\WINRAR_3.61_RUS\RAR.exe" a -ep1 -n*.log "%%~ni"
        popd
    )

     
    Добавлено:
    второй вариант

    Код:
    @echo off
    set "pdir=D:\test\1\"
    for /r "%pdir%" %%i in (.) do "N:\Programs\ARHIVATRORS\WINRAR_3.61_RUS\RAR.exe" a -ep1 -n*.log "%%i\%%~ni" "%%i\"

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 11:11 20-01-2011 | Исправлено: king_stiven, 11:28 20-01-2011
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    InSe0F
    мои исследования дали вот такой результат:
    Код:
    reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections" /f /v DefaultConnectionSettings /t reg_binary /d 4600000001000000030000000e0000003132372e302e302e313a31313131070000003c6c6f63616c3e000000000000000000000000000000000000000000000000000000000000000000000000
     
    reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections" /f /v SavedLegacySettings /t reg_binary /d 4600000002000000030000000e0000003132372e302e302e313a31313131070000003c6c6f63616c3e000000000000000000000000000000000000000000000000000000000000000000000000

    естественно, длиннющая строка цифр - это значение полей DefaultConnectionSettings и SavedLegacySettings. Понятное дело, команда начинается от reg.exe и заканчивается этим рядом цифр. Всё в одну строчку.

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 12:14 20-01-2011 | Исправлено: Accessor, 12:16 20-01-2011
    Mark_Titov



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго дня уважаемые.
    Помощь нужна ваша.
    Необходимо сверить текущую системную дату с датой в файле "msd1f.txt" и если даты разные, то goto :start
    msd1f.txt лежит в C:\
     
    Заранее благодарю...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 15:02 20-01-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Mark_Titov
    Про даты тут уже куча тем поднималась.
    В файле дата в каком формате лежит? Кроме даты что-то еще в файле есть?

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 15:08 20-01-2011
    Mark_Titov



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

    Цитата:
    В файле дата в каком формате лежит?

    20.01.2011

    Цитата:
    Кроме даты что-то еще в файле есть?

    Нет...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 15:19 20-01-2011
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mark_Titov
    можно еще несколько наводящих вопросов: дата в файле первой или последней строкой? нет ли в оном файле подвохов вроде записей схожих по формату с датой?

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 15:27 20-01-2011
    Mark_Titov



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

    Цитата:
    дата в файле первой или последней строкой?

    Первая строка и единственная в этом файле...
     
     
    Добавлено:

    Цитата:
    ет ли в оном файле подвохов вроде записей схожих по формату с датой?

    Формат такой %date:~-10% и все...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 15:29 20-01-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Mark_Titov
    Если формат даты в файле и формат переменной %date% один и тот же то можно так:
     

    Код:
    @echo off
    set /p fd=<msd1f.txt
    if "%fd%" equ "%date%" (echo Даты равны) else (echo Даты не равны)

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 15:32 20-01-2011
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru