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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    qrock



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Товарищи подскажите пути решения для следующей ситуации. Есть набор папок, с названиями по дате вида YYYYMMDD (например, 20071022). Необходимо удалить папки с содержимым у которых дата в названии меньше текущей более чем на n-дней.
    Как организовать такое?

    Всего записей: 128 | Зарегистр. 19-01-2005 | Отправлено: 08:49 22-10-2007
    NIKZZZZ



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

    Цитата:
    Если я не ошибаюсь, в безопасном режиме  не выполняется.


    Цитата:
     похоже, в безопаске вообще ничего нельзя запустить, по крайней мере я не нашел еще способа

    Да, действительно RunOnce не отрабатывается. Отрабатывается RunOnceEX.

    Код:
    Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\1" /v "SafeBackUp" /t REG_SZ /d "copy %temp%\boot.ini c:\ /y"
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:07 22-10-2007 | Исправлено: NIKZZZZ, 12:11 22-10-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    и действительно, работает, что-то не получалось у меня без папки запускать, то есть, с корня ветки реестра не работало
     
    ASTERIKS88
    лови окончательное решение
    благодаря NIKZZZZ теперь работает отлично
    Код:
    @echo off
    bootcfg/raw "/safeboot:minimal" /id 1
    reg add "hklm\software\microsoft\windows\currentversion\runonceex\a" /v "bootrun" /d "bootcfg /raw """/fastdetect /noexecute=optin""" /id 1" /f
    shutdown -r -t 0

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 14:14 22-10-2007
    NIKZZZZ



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

    Цитата:
    работает, что-то не получалось у меня без папки запускать

    И не получится. Причем название раздела и параметра четко определяем последовательность запуска . Кроме того, в отличии от RunOnce, RunOnceEx ждет завершения процесса.
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 15:46 22-10-2007
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 16:51 22-10-2007
    lexalug

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите новичку.
    Например, есть файл qwe.bat.
    При нажатии на него, нужно, чтобы он на экран
    выводил только имя своего файла, или расширение.
    Вот так это в ДОС-е:
     
    echo %0  - в файле qwe.bat
    qwe   - выводится на экран
     
     
    Вот так в Windows XP:
     
    echo %~n0  - в файле qwe.bat
    qwe   - выводится на экран
     
    или если хочу только расширение
     
    echo %~x0  - в файле qwe.bat
    bat   - выводится на экран
     
     
    А как сделать это в Windows 98?
    Вышеперечисленные методы не проходят:
     
    echo %0  - в файле qwe.bat
    qwe.bat   - выводится на экран, т.е. полное имя =(
     
    echo %~n0  - в файле qwe.bat
    ~n0   - выводится на экран, т.е. вообще таких параметров не знает =(

    Всего записей: 3 | Зарегистр. 22-10-2007 | Отправлено: 18:45 22-10-2007
    AndryG

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В папку потихоньку сваливаются arj архивы ... когда одинарные, когда многотомники ... надобно, когда архив весь придет в папку (все тома), распаковать в определенное место.
     
    Вопрос. Как узнать, что я имею ВСЕ тома архива?
    Полазил по справке архиватора -- ничего не нашел по теме .. единственное, что придумал, так это открывать архив в временную папку и по errorlevel определеять, открылся или нет. если да, то открывать и в нужную папку ... иначе немного подождать и опять пробовать открыть.
     
    Но тода получаю глюк ... если придет битый архив, то я до посинения буду ждать, когда придут все тома архива.
     
    Пробовал с архиватором ... по errorlevel не различаются ошибки "битый архив" и "не все тома".
     
    Кто что подскажет?

    Всего записей: 26 | Зарегистр. 07-09-2007 | Отправлено: 19:08 22-10-2007
    vu1tur



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AndryG

    Цитата:
    Полазил по справке архиватора -- ничего не нашел по теме .. единственное, что придумал, так это открывать архив в временную папку

    ну тогда уж arj t — проверять на целостность.

    Цитата:
    Но тода получаю глюк ... если придет битый архив, то я до посинения буду ждать, когда придут все тома архива.

    добавить счетчик, и скрипт после N попыток будет уведомлять об ошибке и удалять/перемещать архивы в какую-то папочку.

    ----------
    I am free of all prejudice. I hate everyone equally.

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 19:53 22-10-2007 | Исправлено: vu1tur, 19:53 22-10-2007
    4ipollo



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть name.exe файл перед запуском которого нужно откатить системную дату на N лет назад, причем N>=4, а по окончании работы этого name.exe восстановить дату обратно. Как реализовать?  
     
    Почитал форум, но так и не нашел подходящего кода.  
    Кто наставит на путь истинный?

    Всего записей: 4 | Зарегистр. 22-10-2007 | Отправлено: 22:12 22-10-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    4ipollo
    Что выдает команда "date" (обе строчки)?

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:22 22-10-2007
    4ipollo



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Да, обе.
     
    Текущая дата:
    Введите новую дату(дд:мм:гг):
     
    А как это использовать в моей ситуации не могли бы подсказать?  
    Или линков где про это почитать можно..

    Всего записей: 4 | Зарегистр. 22-10-2007 | Отправлено: 22:42 22-10-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    4ipollo
    Я, видимо, неправильно вопрос задал
    Меня интересовал формат даты. Формат во второй строчке, ты привел. А в первой как она выглядит?
    Это нужно для того, чтобы написать батник, решающий твою проблему.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:57 22-10-2007
    KapralBel



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

    Код:
    @Echo Off
    Set dtOld=%Date%
    Set dtYear=%dtOld:~-4%
    Set dtDM=%dtOld:~0,-4%
    Set /a dtYear1=dtYear-5
    Set dtNew=%dtDM%%dtYear1%
    Echo %dtNew% |Date  
    Echo Нужн. действия
    Echo Сейчас дата %Date%
    Echo %dtOld% |Date  
     
    set dt
     

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 23:00 22-10-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
    А если там формат "yy", а не "yyyy"?

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:06 22-10-2007
    4ipollo



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
    Спасибо, сейчас попробую.
     
    Elroir
    Там написано 21.10.2007. Я так понимаю это тоже  (дд:мм:гг) ? Или нет?

    Всего записей: 4 | Зарегистр. 22-10-2007 | Отправлено: 23:15 22-10-2007
    Elroir



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

    Цитата:
    Там написано 21.10.2007. Я так понимаю это тоже  (дд:мм:гг) ? Или нет?

    Немножко не так: гг - это 07, а гггг - это 2007 (то есть двух или четырехзначное обозначение).
    Но в данном случае - это неважно. Код KapralBel-а великолепно справляется с заданием. Только вместо строчки "Echo Нужн. действия", напиши "start /wait name.exe".


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:30 22-10-2007
    4ipollo



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    KapralBel
     
    Спасибо за помощь! Очень выручили!

    Всего записей: 4 | Зарегистр. 22-10-2007 | Отправлено: 23:39 22-10-2007
    lexalug

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

    Цитата:
    Например, есть файл qwe.bat.  
    При нажатии на него, нужно, чтобы он на экран  
    выводил только имя своего файла, или расширение.  
    Вот так это в ДОС-е:  
     
    echo %0  - в файле qwe.bat  
    qwe   - выводится на экран  
     
     
    Вот так в Windows XP:  
     
    echo %~n0  - в файле qwe.bat  
    qwe   - выводится на экран  
     
    или если хочу только расширение  
     
    echo %~x0  - в файле qwe.bat  
    bat   - выводится на экран  
     
     
    А как сделать это в Windows 98?  
    Вышеперечисленные методы не проходят:  
     
    echo %0  - в файле qwe.bat  
    qwe.bat   - выводится на экран, т.е. полное имя =(  
     
    echo %~n0  - в файле qwe.bat  
    ~n0   - выводится на экран, т.е. вообще таких параметров не знает =(

    ну неужели никто не знает? =(

    Всего записей: 3 | Зарегистр. 22-10-2007 | Отправлено: 23:54 22-10-2007 | Исправлено: lexalug, 23:55 22-10-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    4ipollo
    KapralBel
    А не проще так:

    Код:
     
    @echo off
    set tempdate=%date%
    date 01-01-04
    notepad.exe
    date %tempdate%
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 09:44 23-10-2007
    01MDM



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

    Код:
     
    @echo off
    mkdir test
    copy %0 test >nul
    cd test
    ren *.* *.
    dir /b
    del *.
    cd ..
    rd test
     

     
    Нужно вводить полное название, вместе с расширением, и из той-же директории, где лежит батник например:

    Код:
     
    C:\>test.bat
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:01 23-10-2007
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru