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

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

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

vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 17:45 04-09-2010 | Исправлено: Accessor, 18:04 28-09-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 20:33 03-11-2010 | Исправлено: bomzzz, 23:23 03-11-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz, ты опять недочитал - что просил человек?
    1. нужен был не каталог хранения запускаемого батник или приблуды, а рабочий диск/каталог батника. совпадать они могут, но нечасто.
    2. нужны они не в файле, а в переменной.
     
    в файл, кстати, текущий каталог запихивается и без приблуд: cd>file.txt
    а вот со способом вытащить что-то из файла и запихнуть в переменную - в голом досе что-то ничего в голову не приходит.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 21:56 03-11-2010 | Исправлено: wolf0425, 21:58 03-11-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    это переменная %0. а что ему надо мы и не знаем

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:11 03-11-2010
    wolf0425



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

    Цитата:
    а что ему надо мы и не знаем
    ну если априори считать что он просил не то что ему надо - то не знаем. а вообще -
    Цитата:
    Как записать текущую букву диска или весь путь в переменную на чистом досе ?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 22:30 03-11-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ну и что. а я ему отвечаю что в досе батники не имеют тех возможностей что под виндой и советую ему сипользовать 4дос или делать свои утилиты

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:36 03-11-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    Цитата:
    Accessor  
    MYNAME.COM  44 байт (44 байт)  

    Не понял, к чему это?

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 22:59 03-11-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    раз не понял значит тебе этого не надо

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:22 03-11-2010
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Цитата:
    рабочий диск/каталог батника
    А через call temp.bat %CD%?
    А внутри уже %1...
     
     
    Добавлено:
    Нет не выйдет... %CD% в чистом досе нет

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 00:27 04-11-2010
    deIfin



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

    Код:
    for /r %%i in (*.zip) do "c:\Program Files\WinRAR\winrar.exe" e "%%i" "%%~pi" && for /r %%i in (*.zip) do del /F "%%i" "%%~pI"

    Но при такой раскладке распаковывается первый, а потом все удаляются. Если первую часть (до && ) взаять в скобки, то все распаковываются и только потом удаляются.

    Всего записей: 122 | Зарегистр. 12-02-2008 | Отправлено: 04:03 04-11-2010
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    deIfin

    Код:
     
    for /r "нужная папка" %%i in (*.zip) do "c:\Program Files\WinRAR\winrar.exe" e "%%i" "%%~pi" && del /f /q "%%i"

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 04:39 04-11-2010
    smirnvlad

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

    Цитата:
    как записать текущую букву диска или весь путь в переменную на чистом досе ?

    для англоговорящего доса
    Подробнее...

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 06:35 04-11-2010 | Исправлено: smirnvlad, 06:37 04-11-2010
    Brother_Micro



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, как из командной строки проверить язык операционной системы и номер SP (в winxp).

    Всего записей: 2302 | Зарегистр. 01-01-2006 | Отправлено: 12:23 04-11-2010
    deIfin



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rush Вот спасибо!! Только никак не пойму почему это работает? Моя конструкция - это часть батника, где предыдущей строкой идет смена текущего каталога (cd /D "нужная папка"), т.е. цикл FOR запускается уже из нужной папки, а судя по FOR/? Если после ключа /R не указано имя каталога,выполнение команды начинается с текущего каталога.

    Всего записей: 122 | Зарегистр. 12-02-2008 | Отправлено: 12:31 04-11-2010
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    deIfin
    Дело не в том, что я приписал папку к фору. Дело в другом. Что делает твой цикл?  
    Он получает первый архив для обработки, потом его распаковывает винрар и, в случае успешного действия, запускается новый цикл, который удаляет последовательно все файлы зип из этого и вложенных каталогов. Потом снова срабатывает первый цикл и пытается получить второй архив. Но, поскольку ты их уже все удалил вторым циклом, на этом первый цикл завершает работу. В итоге: остается только первый распакованный файл.
    Если. как ты говоришь, взять первый цикл в кавычки, то ты отделяешь первый цикл от второго. И второй запускается после полной отработки первого. Поэтому сперва все извлекается, потом все удаляется.
    А в моем примере архив распакуется и тут же после этого удалится.

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 13:21 04-11-2010
    01MDM



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

    Код:
     
    systeminfo
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:45 04-11-2010
    Brother_Micro



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Ага... а как это дальше-то использовать?
    Если SP3, то сделать одно, если SP2, то другое.

    Всего записей: 2302 | Зарегистр. 01-01-2006 | Отправлено: 14:35 04-11-2010
    01MDM



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

    Код:
     
    @echo off
     
    2>nul (
         
        systeminfo | 1>nul findstr /c:"Service Pack 3" && (
            
            echo SP3
            echo doing something
            goto:eof
     
        )
     
        systeminfo | 1>nul findstr /c:"Service Pack 2" && (
         
            echo SP2
            echo doing something more
     
        )
    )
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:52 04-11-2010
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Brother_Micro
    еще способ:

    Код:
     
    @echo off
     
    for /f "tokens=1-3" %%a in ('wmic path win32_operatingsystem get
           oslanguage^,servicepackmajorversion^,version'
    ) do (
            set OSLanguage=%%a
            set ServicePack=%%b
            set WindowsVersion=%%c
            )
     
    @echo Windows Version - %WindowsVersion%
    @echo Service Pack - %ServicePack%
    @echo OS Language - %OSLanguage%
     
    pause
     

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 15:01 04-11-2010 | Исправлено: Rush, 15:03 04-11-2010
    Brother_Micro



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

    Всего записей: 2302 | Зарегистр. 01-01-2006 | Отправлено: 16:16 04-11-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    Цитата:
    раз не понял значит тебе этого не надо
    Ты статус "набиваешь" своими бессмысленными постами?

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 18:42 04-11-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 9
    vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru