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

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

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

    Цитата:
    Последняя точка отделяет имя (возможно тоже с точками) от расширения - поэтому и не получится

    Я в курсе, но всеравно не понимаю в чем логика. Почему бы не создать файл с точкой в конце имени и нулевым расширением...  
    Ладно не важно, моим умом майкрософт не понять.
    Интересно что будет если функциями файловой системы такой файл сделать(например nul замечательно создается), или вообще из другой ос, типа никсов или паргоновского файлового менеджера. Но это офтоп
     

    Цитата:
    Не знаю, думаю и в М$ тоже не знают

    Вот об этом я и говорю. Они в документации точек понаставили, а у меня 2 часа рабочего времени на это ушло и всеравно смысл этих загадочных точек не понятен.
     

    Всего записей: 238 | Зарегистр. 19-08-2007 | Отправлено: 10:58 08-10-2007 | Исправлено: Filosofem, 11:00 08-10-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Filosofem
    да не обращай внимание на эти точки - и жизнь станет легче

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:05 08-10-2007
    Filosofem

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
    спасибо, так и сделаю. Будем считать очередная загадка природы.

    Всего записей: 238 | Зарегистр. 19-08-2007 | Отправлено: 11:33 08-10-2007
    wolf0425



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

    Цитата:
    Будем считать очередная загадка природы.
    Да это видимо затычка на случай когда filename. - на самом деле переменная, %filename%.
    Так можно не проверять специально - определена ли %filename%
    Надо взять на вооружение, наверно.

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 11:57 08-10-2007
    Filosofem

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    хорошая идея, но опять же в данном примере

    Код:
     IF EXIST %File%. (
    del %File%.
    ) ELSE (
    echo %File%. missing.
    )  
     
    если переменная file не определена, будут удалены все файлы из текущей директории включая сам батник.

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



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

    Цитата:
    Почему бы не создать файл с точкой в конце имени и нулевым расширением...

    На самом деле, создать файл (или директорию) с точкой в конце - можно. Делается это так:

    Код:
     
    echo.>"\\?\c:\file_with_dot."
     

     
    wolf0425

    Цитата:
    Да это видимо затычка на случай когда filename. - на самом деле переменная, %filename%. Так можно не проверять специально - определена ли %filename%  

    Ничего не понял. При чем тут переменные?


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

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



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Elroir
    Можно, только вот проводник - не желает общатся с такими файлами
     
    Комм.строка и ФАР - запросто

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:48 08-10-2007
    Filosofem

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    круто! Впечатляет!!!
    Попробовал таким же способом создавать и удалять файлы con, nul, lpt1... итд. Все получается!
    Я так понимаю дело в конструкции \\?\
    Где про нее можно поподробнее почитать?

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
    Это на случай, когда надо создать файл или директорию, которые сложно удалить
     
    Добавлено:
    Filosofem

    Цитата:
    Где про нее можно поподробнее почитать?

    Э... где-то у Майкрософта. Но вот где точно я об этом читал - не помню.

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

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



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Filosofem
    Вполне согласен с Elroir - гдето у мелкомягких
    Но инфа уже давно живет своей жизнью - и боюсь перовоисточник уже не найдешь
     
    Elroir
    Гы.
    Файлик Nul. - у него более забавное поведение, можно попытаться переименовать, не ругается (как в твоем случае), но и не переименовывает
     
     
     

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



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

    Цитата:
    Файлик Nul. - у него более забавное поведение

    Ну так это же получился "двойной удар". Мало того, что имя зарезервировано, так еще и с точкой в конце
     
    Filosofem
    Не совсем оно, но какая-то информация там есть - http://support.microsoft.com/kb/320081

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 13:07 08-10-2007
    Filosofem

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    первоисточник не так важен. Прикол в том, что поисковиками это не найти. Пробовал и буквально и "backslash question mark"  искать, ничего не выходит. Я и раньше с такими конструкциями сталкивался, например в реестре так любят пути прописывать. Народ если у кого есть ссылки про \\?\, пишите... очень любопытно стало.

    Всего записей: 238 | Зарегистр. 19-08-2007 | Отправлено: 13:11 08-10-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Filosofem
    Я всегда понимал что \\?\ это обозначение текущего раздела. Если ввести mountvol, то видно что все разделы обозначаются именно так, \\?\Volume{ID раздела}\

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



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

    Цитата:
     
    The Unicode versions of several functions permit a maximum path length of approximately 32,000 characters composed of components up to 255 characters in length. To specify that kind of path, use the "\\?\" prefix.  
     
    Note  The maximum path of 32,000 characters is approximate, because the "\\?\" prefix can be expanded to a longer string, and the expansion applies to the total length.
     
    For example, "\\?\D:\<path>". To specify such a UNC path, use the "\\?\UNC\" prefix. For example, "\\?\UNC\<server>\<share>". These prefixes are not used as part of the path itself. They indicate that the path should be passed to the system with minimal modification, which means that you cannot use forward slashes to represent path separators, or a period to represent the current directory. Also, you cannot use the "\\?\" prefix with a relative path. Relative paths are limited to MAX_PATH characters.
     

    http://msdn2.microsoft.com/en-us/library/aa365247.aspx

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 13:25 08-10-2007
    Filosofem

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    спасибо! Это именно то что надо.

    Всего записей: 238 | Зарегистр. 19-08-2007 | Отправлено: 14:42 08-10-2007
    wolf0425



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

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

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 14:46 08-10-2007
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как батником можно удалить папку с именем, например, %COMMANDER_PATH% ?

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 15:41 08-10-2007
    Filosofem

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GORA2
    пчему бы просто не удалить?

    Код:
    rd %%COMMANDER_PATH%%

    Всего записей: 238 | Зарегистр. 19-08-2007 | Отправлено: 15:58 08-10-2007
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А если батник из которого нужно произвести удаление, находиться в этой же папке, то можно эту папку удалить?

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 16:25 08-10-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    GORA2
    Попробуй сначала перейти в корень диска

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:41 08-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