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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    dj_Diesel



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    а у меня вопрос в другом как защитить батник
     
    рассказываю по порядку мне здесь сделали батник который который спрашиает пароль при запуске если неправильный пароль то ребут
     
    проблема в том что можно спокойно закрыть окошко батника крестиком и все
    вопрос как сделать чтобы при закрытии окна крестиком или Alt+F4  
    был тоже ребут
     
    а то смысла нет в батнике ....

    Всего записей: 1549 | Зарегистр. 09-09-2006 | Отправлено: 08:55 18-11-2008
    batniki



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dj_Diesel, можно внутри защищаемого батника сделать вывод и запуск в файл 2-го батника, в нем сделать, что-то типа цикла проверки процессов системы с помощью WMIC, окно второго батника прятать (чтобы его нельзя было закрыть) с помощью специальной утилиты командной строки. Если второй батник обнаружит, что в процессах только один cmd.exe , то он ребутнет систему – как вариант реализации, хотелось бы тоже посмотреть на код

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 12:11 18-11-2008
    ipmanyak



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dj_Diesel Скомпили батник в exe файл и сделай его службой.  
    Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
    Позволяет скомпилить батник в exe без создания окна windows! Попробуй, может и прокатит.


    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11724 | Зарегистр. 10-12-2003 | Отправлено: 15:21 18-11-2008 | Исправлено: ipmanyak, 15:23 18-11-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот схематический набросок батника. Не пойму, почему
    echo %%~nd
    правильно показывает. Причём, мы все переменные %%d можем заменить на другие, например %%r, так что дело не в букве. Каким то образом после перехода
    call brabotka
    пременная %%~nd выводится. Будет ли это на всех компах?

    Код:
    for  %%c in (%1) do (
        if exist "%%c\" (
            for /f "usebackq tokens=*" %%d in (`dir "%%c*.mp3" /b`) do (
                set "name=%%~nxd"
                set "way=%%~dpd"
                call : obrabotka
            )
        )
    )
    goto :eof
    : obrabotka
    for /f "usebackq tokens=*" %%g in (`dir "%way%*.mp3" /b /o:-n`) do (
        if not "%%g"=="%name%" (
            echo %%~nd
            goto ...
        )
    )

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 17:00 18-11-2008 | Исправлено: king_stiven, 17:03 18-11-2008
    avkorets



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    граждане форумчане тыкните  ошибку...

    Цитата:
     
    @echo off
    cls
    setlocal enabledelayedexpansion  
    for %%i in (*.txt) do (
    set /p firstline=<%%i
    echo !firstline!>> 1.tmp
    setlocal
    for /f "skip=1 tokens=1-8 delims=;" %%a in (%%j) do (set x=%%d
    :run
    set /a cnt+=1
    if not "!x:~%cnt%,1!"=="" goto run
    if "%cnt%"=="20" ( set  
        echo %%a;%%b;%%c;%%d;;;;%%f;;%%e;%%g;%%h>> 1.tmp
        ) else (
        echo %%a;%%b;%%c;;%%d;;;%%f;;%%e;%%g;%%h>> 1.tmp
    )
    )
    )
     

    считает длину переменной только из первой орабатываемой строки, из последующих строк в файле не считает..
    буду признателен..

    Всего записей: 81 | Зарегистр. 09-09-2008 | Отправлено: 17:09 18-11-2008 | Исправлено: avkorets, 21:55 18-11-2008
    vitaliy91

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

    Всего записей: 37 | Зарегистр. 16-11-2008 | Отправлено: 17:59 18-11-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    avkorets
    вывод построчно содержимого файла
     
    for /f "usebackq tokens=*" %%c in ("1.txt") do echo %%c
    или тебе надо назначить переменной несколько строчек файла? Вот этот батник назначает переменной u все строчки файла.
     
    setlocal enabledelayedexpansion  
    for /f "usebackq tokens=*" %%c in ("1.txt") do (
        if defined u set u=!u! %%c
        if not defined u set u=%%c
    )

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 18:10 18-11-2008 | Исправлено: king_stiven, 18:21 18-11-2008
    dj_Diesel



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    @echo off  
    setlocal  
    set /p pass="Please, enter password : "  
    if not "%pass%"="12345678" (  
    echo The password is wrong, rebooting....  
    shutdown -r -f  
    goto :EOF  
    )  
    ...  
    ...  
    ...
    EXIT
     
    вот код!
     
    Добавлено:
    batniki
    лучше Ваш способ насчет
    Цитата:
    можно внутри защищаемого батника сделать вывод и запуск в файл 2-го батника, в нем сделать, что-то типа цикла проверки процессов системы с помощью WMIC, окно второго батника прятать (чтобы его нельзя было закрыть) с помощью специальной утилиты командной строки. Если второй батник обнаружит, что в процессах только один cmd.exe , то он ребутнет систему – как вариант реализации, хотелось бы тоже посмотреть на код

     
     
    так как Ваш способ ipmanyak  не подошел, если обычный exe то опять таки спокойно крестиком закрывается, если без окна то просто висит в процессах ввести пароль нельзя silent mode и все
    Спасибо за помощь
     
     

    Всего записей: 1549 | Зарегистр. 09-09-2006 | Отправлено: 18:40 18-11-2008
    Freemanther

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужен такой батник:
    Копирует 3000 файлов с расширением vtx в те же папки, но расширение меняется на .sw.vtx, список файлов есть, как мне автоматизировать процесс?

    Всего записей: 4 | Зарегистр. 21-06-2008 | Отправлено: 19:36 18-11-2008
    dj_Diesel



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

    Всего записей: 1549 | Зарегистр. 09-09-2006 | Отправлено: 19:39 18-11-2008
    Freemanther

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Тормознутая прога, да и как ею в батник всё это сохранить?

    Всего записей: 4 | Зарегистр. 21-06-2008 | Отправлено: 19:58 18-11-2008
    king_stiven

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

    Код:
    chcp 1251 > nul
    for /f "usebackq tokens=*" %%i in ("список файлов.txt") do copy "%%i" "%%~dpi%%~ni.sw.vtx"

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:34 18-11-2008
    avkorets



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    задача следущая.
    в директории находятся файлы...это первый цикл в коде.
    первую строку из файла записываем в другой файл затем я назначаю переменные в строке файла разделенные ; и эти переменные вывожу в другой файл но в другом порядке и форме.
    так вот мне нужно подсчитать колво символов в переменной %%d (их a,b,c,d,e,f и т.д.)и если их 20 то печатаем одну форму если не 20 другую...И это должно выполнятся для всех строк в файле..
    Причем в каждой строке переменная %%d имеет разное колво символов.
    Для подсчета длины пеерменной пользуюсь  

    Цитата:
     
    set /a cnt+=1
    if not "!x:~%cnt%,1!"=="" goto run
    if "%cnt%"=="20"  
     

    так вот написанный выше код выполняется только для первой строки в файле остальные он не обрабатывает..
    вот  вчем вопрос как сделать чтоб обрабатывал все строки.И подсчитывал длину переменной %%d из каждой строки.

    Всего записей: 81 | Зарегистр. 09-09-2008 | Отправлено: 21:53 18-11-2008
    king_stiven

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

    Код:
    for %%a in (*.txt) do (
        for /f "usebackq tokens=*" %%b in ("%%a") do (
            for /f "tokens=1-8 delims=;" %%c in ("%%b") do (
                set k=
                set forma=%%f
                call :START
                IF "!k!"=="20" (
                    ....
                 ) else (
                      ....
                 )
            )
        )
    )
    goto :eof  
     
    :START
    set /a k+=1
    IF not ""=="!forma:~0,-%k%!" goto:START

    Первая for перебирает файлы, вторая строки. третья разбирает строки, используя первых 8 частей. Затем переменной forma присваиваем значение четвёртой части строчки и преходим на метку :START. Затем считаем кол-во знаков в переменной forma, и т д.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 23:35 18-11-2008 | Исправлено: king_stiven, 23:43 18-11-2008
    postmike

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые специалисты, помогите
    написать такой батник или ткните в похожий.
    Сам найти не смог
     
    имеется папка_A с вложенными папками, в которых лежат файлы zip архивов и разные прочие файлы.
     
    надо перенести все содержимое в папку_B, только все zip архивы распаковать и запаковать снова rar-ом с максимальным сжатием. Внутренняя структура папок, имена файлов должны сохраниться, только zip-ы станут rar-ами.
     
    Цель - ужать все на 10% чтобы влезало на DVD
    (возможно это важно - имена папок и файлов имеют пробелы и русские символы)

    Всего записей: 1 | Зарегистр. 27-06-2006 | Отправлено: 23:43 18-11-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    postmike
    как-то так попробуй, не тестил
     
    Код:
    @echo off
    set wr=c:\program files\winrar\winrar
    for /r . %%a in (*.zip) do (
    %wr% x "%%a" "%temp%\%%~na\"
    %wr% a -m5 -r -ep1 "%%~dpna.rar" "%temp%\%%~na\"
    rd/s/q "%temp%\%%~na\"
    )
    код сохрани в кодировке 866

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 02:36 19-11-2008
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как написать простенький цикл который бы печатал номера от 1 до 999, но в трехзначном формате (001,002,003...011,012...899,900...999) ?

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 10:41 19-11-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GORA2
    Код:
    for /l %%a in (1,1,999) do (
    set n=%%a
    call:ch
    )
    goto:eof
    :ch
    set
    "n=000%n%"
    set "n=%n:~-3%"
    @echo %n%>>1.txt

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 11:09 19-11-2008
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Спасибо, то что надо. Очепятку в конце файла (отсутствие goto:eof ) сам поправил.

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 13:28 19-11-2008
    batniki



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

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 16:17 19-11-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 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