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

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

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

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    сяс  попробуим
        invoke  StdOut,ADDR buffer      
    нету у меня такого в справочнике случайно нагуглил
     
    cFOLDER.EXE    2,00 КБ (2 048 байт)
    возвращает длинный путь в 866 кодировке и код возврата тоже
     
    CFOLDER.EXE    2,00 КБ (2 048 байт)
    вот ета короткий путь возвращает и код возврата тоже
     
    проверяй  

    Цитата:
     
    ECHO OFF
    COLOR 9F
    CLS
    CFOLDER.EXE /11111111111111111111/222222222222222222222222
    ECHO.
    ECHO %ERRORLEVEL%
    FOR /f "delims=*" %%I IN ( 'cFOLDER.EXE' ) DO SET G=%%I
    ECHO.
    ECHO %G%
    ECHO %G%>MMM.TXT
    TYPE MMM.txt
    ECHO OFF>"%G%\MY.TXT"
    PAUSE
     

     
    Добавлено:
    http://narod.ru/disk/23438457000/WIN32.zip.html спарвочник нормальный у мине а вот такого нету тута
    http://films-onep.ifolder.ru/18930165
     
    вроде номрально все - не могу понять что с переносом строки, но работает
     
    Добавлено:
    кстати в этом случае ее можно не компилировать как консольную
     
    Добавлено:
    C-FOLDER.EXE    2,00 КБ (2 048 байт)
    не консольная - значение только из потока можно получить

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 01:58 18-08-2010 | Исправлено: bomzzz, 03:19 18-08-2010
    BVV63



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

    Код:
    ...
    2>nul pushd "%%i\Local Settings\Temporary Internet Files" && 2>nul rd /s /q "."
    ...

    Чертовски изящно!!!
    Я ранее для чистки каталогов вертел rd в цикле for, поскольку не понимает, зараза, маску. Потом файлы гробил. А тут всё разом! Приму на вооружение.
    P. S. Вот только нужно проверить, как сработает операция, ежели внутри каталога что-нить неудаляемое окажется. Удалит всё остальное, либо прервётся?
     
    Добавлено:
    Удаляет!

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 05:44 18-08-2010 | Исправлено: BVV63, 05:53 18-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    причем я до сих пор не понил как сей шедевр работает
    2>nul    
    но к списаку жемчужин от 01MDM сразу добавил

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 08:44 18-08-2010
    kurbat



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

    Всего записей: 89 | Зарегистр. 01-08-2007 | Отправлено: 09:05 18-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FILE.EXE    2,50 КБ (2 560 байт)

    Цитата:
     
    ECHO OFF
    COLOR 9F
    CLS
    FOR /f "delims=*" %%I IN ( 'NONAME.EXE /C:\Temp' ) DO SET G=%%I
    ECHO.
    ECHO %G%  
    pause
     

    параметр пока один - папка по умолчанию, если опустить открывается на рабочем столе или последнее открытое окно в этом типе окна - если не очисщены записи в системе:
       
    как передать вот это строкой мыслей нету:

    Цитата:
     
    .data
    FileFilter        db "All Files",0,"*.*",0
    db "Text Files",0,"*.txt",0
    db "Video Files",0,"*.avi;*.wmv;*.mkv;*.mpg;*.mpeg;*.mp4",0
    db "Audio Files",0,"*.wav;*.mp3;*.flac;*.wma;*.ac3;*.ram;*.rm",0
    db "Image Files",0,"*.iso;*.ima;*.img;*.imz;*.vdf;*.isz;*.bin;*.cue;*.nrg;*.mdf;*.mds;*.uif",0
    db "Bitmap Files",0,"*.bmp;*.jpg;*.jpeg;*.png;*.gif;*.pcx;*.iff;*.psd;*.ras;*.rsb;*.sgi;*.tga;*.tiff",0
    db "Archive Files",0,"*.zip;*.rar;*.gz;*.gzip;*.7z;*.cab;*.arj;*.jar",0
    db 0
     

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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 09:06 18-08-2010 | Исправлено: bomzzz, 16:51 18-08-2010
    Rush

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

    Цитата:
    причем я до сих пор не понил как сей шедевр работает  
    2>nul    

    Работает просто и изящно.  
     
    for /d %%i in ("C:\Documents and Settings\*") - перебирает вложенные в "C:\Documents and Settings\" каталоги.
     
    2>nul pushd "%%i\Local Settings\Temporary Internet Files" - выполняет переход в каталог "C:\Documents and Settings\какой-то пользователь\ Local Settings\Temporary Internet Files". Если такого каталога нет, сообщение об ошибке (2>nul) перенаправляется в nul (не выдается). И обрабатывается уже следующий каталог.
     
    && 2>nul rd /s /q "." - если же такой каталог есть (&&), то в нем удаляются все каталоги (".") включая подкаталоги вместе с файлами (/s). Вывод ошибок опять игнорируется.

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 10:30 18-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    INPUTBOX.EXE    3,00 КБ (3 072 байт)
       
    переделал в свете последний нововведений

    Цитата:
     
    ECHO OFF
    COLOR 9F
    CLS
    FOR /f "delims=*" %%I IN ( 'INPUTBOX.EXE /TITLE/SUBTITLE/300/250' ) DO SET G=%%I
    ECHO %G%
    pause
     

    параметры командной строки
    INPUTBOX /заголовок/иформационная строка/положение окна по Y/положение окна по X
    кодировка вывода 866, если опустить два последних параметра окно появится в верхнем левом углу экрана - 0 0. буфер под строку 64 кб, сколько длина строки в батнике даже не скажу с ходу наверно 1 кб
     
    спс wolf0425 за идею. окно не маё я его в инете где то надыбал давно. подправил маненько
     
    старые поделки
    http://forum.ru-board.com/topic.cgi?forum=5&topic=29819&start=1040#12
    http://forum.ru-board.com/topic.cgi?forum=5&topic=29819&start=1060#12
    http://forum.ru-board.com/topic.cgi?forum=5&topic=29819&start=1200#4
     
    REBOOT.EXE    1,50 КБ (1 536 байт)

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 11:30 18-08-2010 | Исправлено: bomzzz, 11:45 18-08-2010
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    Ты бы создал отдельный топик по своим утилиткам. В шапке, если желаешь, можно ссылу на него дать.
    А здесь они у тебя разбросаны где попало по топику.

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 11:46 18-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ну как нить сделаю - они побочный продукт разбора апи функций
     
    Добавлено:
    с этими четтырьмя окнами: диалоговые, выбор папки, выбор файла, ввыод строки + WMI уже сильнее вбс скриптов батнички

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



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

    Цитата:
    Добавлено:
    C-FOLDER.EXE    2,00 КБ (2 048 байт)
    не консольная - значение только из потока можно получить
    чего-то не пойму как от неё хоть что-то получить.
     
    а cFOLDER.exe реально переделать чтоб вывод был в текущей установленной кодировке консоли, а не в ОЕМ?
    просто ОЕМ мне малополезен, у меня обычно кодировка 1251...

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:43 18-08-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 12:47 18-08-2010 | Исправлено: bomzzz, 14:00 18-08-2010
    Scaramanga



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброго времени суток. Такой вопрос.
    Нужен батник который будет искать файл с определенны именем(пусть будет start.exe) в корне всех дисков. В случае если он найдет его то запускает, если нет то батник прекрашает работу.
    Сейчас же у меня он если не находит файл выдает ошибку о том что файл не найден(

    Всего записей: 516 | Зарегистр. 24-04-2008 | Отправлено: 12:50 18-08-2010
    bomzzz



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

    Цитата:
     
    ECHO OFF
    COLOR 9F
    CLS
    for /f %%i in ('fsutil fsinfo drives ^|more') do (  
      if exist %%iSTART.EXE echo %%iSTART.EXE
    )
    pause
     

     
    Добавлено:
    у меня работает
     
    Добавлено:
    чтоб было так как ты хочешь надо заменить
    if exist %%iSTART.EXE echo %%iSTART.EXE  
    на
    if exist %%iSTART.EXE %%iSTART.EXE

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 12:52 18-08-2010 | Исправлено: bomzzz, 12:54 18-08-2010
    Scaramanga



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    bomzzz спасибо огромное. Все работает)

    Всего записей: 516 | Зарегистр. 24-04-2008 | Отправлено: 13:12 18-08-2010
    wolf0425



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

    Цитата:
    в принципе можно во что угодно перекодировать.
    из ОЕМ уже поздно что-то перекодировать, если уникодное русское имя выдано  программой в ОЕМ - оно в случае скобок и тире уже безнадежно испорчено, обратная перекодировка в 1251 произойдет неверно.  
    пример имени каталога для теста: "содержит «кавычки» и — тире", каталог тупо создать в GUI

    Цитата:
     если не делать в оем то кодировка такая что невозможно русские буквы переделать в батнике уже никак
    ужасы то какие. сказки то прекращай рассказывать.
    1251 - заметно более родная виндам кодировка, чем доставшаяся в наследство от ДОСа ОЕМ.
    А переключить консоль в 1251 вообще не проблема, и редактировать батники в 1251 обычно удобнее.
    в общем хочется чтоб правильно работало

    Код:
    @echo off
    chcp 1251
    echo проверка кодировки
    for /f %%a in ('cFOLDER-a.exe') do echo %%a

    dir /b на месте cFOLDER - замечательно сам переключает кодировку вывода на ту что установлена в консоли.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 13:26 18-08-2010 | Исправлено: wolf0425, 13:28 18-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CURRENT.EXE  
     
    на тебе без оем кодировки делай с ней все что хочешь

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 13:31 18-08-2010 | Исправлено: bomzzz, 03:43 19-08-2010
    wolf0425



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

    Цитата:
    на тебе без оем кодировки делай с ней все что хочешь  
    оно без никакой кодировки - ничего никуда не выдает,  а current.exe >file даже файл не создает.
     
    пс: что у тебя фонт на принтскрине стоит дефолтовый кривой неуникодный терминал - вижу, и что?
    в комплекте виндов уникодный консольный фонт тоже есть - люсида, в ней 1251 и 866 буковки правильно показываются в консоли одновременно...

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 15:09 18-08-2010 | Исправлено: wolf0425, 15:14 18-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FOR /f "delims=*" %%I IN ( 'cFOLDER.EXE' ) DO SET G=%%I
    ECHO %G%>MMM.TXT  
    а вот так выдает
     
    Добавлено:
    у меня и так выдает cFOLDER.exe>file

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:12 18-08-2010 | Исправлено: bomzzz, 15:14 18-08-2010
    wolf0425



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

    Цитата:
    Добавлено:
    у меня и так выдает cFOLDER.exe>file
    ты файлик в предыдущем сообщении не тот приложил, или я что-то плохо вижу?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 15:15 18-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    скачал тот который ты заказывал тоже выдает.
    &#14915;&#17500;&#25455;&#28021;&#28261;&#29556;&#24864;&#25710;&#21280;&#29797;&#26996;&#26478;&#23667;&#28514;&#31341;&#31354;&#52316;&#59630;&#58400;&#60142;&#60659;&#60901;&#64498;
    но тут на самом деле если перенос строки добавить будет нормально в той же идиотской кодировке которую невозможно ни во что перекодировать
     
    Добавлено:
    хахаха
     
    Добавлено:
    в алкепаде нормально открывается. в любом продвинутом блокноте

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:19 18-08-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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru