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

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



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

    Код:
    for /f %%i in ('file.ext') do (copy %%i disk:\destination\folder)

    Как- то так... Батник положишь в папку с файлами.

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 18:04 16-08-2010 | Исправлено: us0r, 18:24 16-08-2010
    wolf0425



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

    Цитата:
    рядом с екзешником образуется текстовый файл Folder.txt в котором в первой строке длинное имя папки, во второй строке короткое имя папки.
    если особые пожелания будут пока я не забыл как все делается, и исходник горячий  
    основное пожелание - выкинуть нафиг запись файла, выбранное имя выдавать на stdout (только полное, короткое проще уже в батнике из длинного получить)

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



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 00:32 17-08-2010 | Исправлено: bomzzz, 06:23 17-08-2010
    bomzzz



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

    Цитата:
     
    ECHO OFF
    COLOR 9F
    CLS
    chcp 1251
    cd /D F:\Temp
    "C:\Documents and Settings\USER\Рабочий стол\QCOPY.EXE" "C:\Documents and Settings\USER\Рабочий стол\MYFILE.TXT"
    echo %errorlevel%
    pause
     

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

    Цитата:
     
    0 удачно скопировано
    1 нет командного параметра
    2 файл не существует или ошибка чтения
    3 ошибка определения свободного места на диске
    4 нет места на диске
    5 файл с таким именем существует
    6 ошибка создания файла
     

    Прим.
    5 файл с таким именем существует - если файл копируется сам в себя создается до ста копий с именем 00_имя, 01_имя, 02_имя.............. если все имена от 00 до 99 заняты сообщает 5.
     
    чтоб сменить текущую директорию - CD путь, чтоб сменить текущий диск - CD /D путь. папки она не копирует, то есть это copy а не xcopy.
     
    QCOPY.EXE    3,00 КБ (3 072 байт)
    тоже самое неконсольный вариант о всех ошибка сообщает окнами.
     
    QCOPY-C.EXE    3,00 КБ (3 072 байт)
    тоже самое полуконсольный вариант, обо всем сообщает окнами кроме удачного копирования - 0.
     
    Добавлено:
    буфер в 32 мб оказался оптимальным, с большим особого ускорения нет. с меньшим заметно медленнее(в два раза).  
    себе я сделал в 128 мб буфер - чтоб винт не портить. даже не знаю есть ли еще компьютеры с 128 мб оперативки. 256 наверно есть. какая разница сколько все равно 2 гига всегда свободны. на копировании маленьких файлов это практически не сказывается.
    если кому то надо заказывайте я могу любой размер перекомпилировать
    QCOPY128.EXE    3,00 КБ (3 072 байт)

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброй ночи.
     
    Помогите пожалуйста, нужен батничек. Он должен в директории C:\Documents and Settings залазить к каждому пользователю в папку и удалять оттуда содержимое вот этой папки(папка скрытая) ( C:\Documents and Settings\ПОЛЬЗОВАТЕЛЮ\Local Settings\Temporary Internet Files )
     
    Заранее огромное спасибо, надоело сидеть и вручную подчищать, а папок там штук 200.

    Всего записей: 1 | Зарегистр. 17-08-2010 | Отправлено: 05:02 17-08-2010
    01MDM



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

    Код:
     
    @echo off
     
    for /d %%i in ("C:\Documents and Settings\*") do (
         2>nul pushd "%%i\Local Settings\Temporary Internet Files" && 2>nul rd /s /q "."
         popd
    )
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 06:49 17-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    for /f "" %%I in ( 'cFOLDER.exe' ) do echo %%I
     
    ну и толку то - только посматреть можно, а вот так не получается.

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 10:54 17-08-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    Слушай, мне надо на субноуте обрабатывать много mp3 файлов, стирать у них ID3 2 теги и прописывать новые, нельзя ли эту операцию делать в оперативке, так как на флеш памяти это долго делается?

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 11:21 17-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    исправил теперь получается. вот так надо было
     
     STD_ERROR_HANDLE - Дескриптор стандартной ошибки устройства. Вначале, это - дескриптор активного экранного буфера консоли, CONOUT$.
    а вот так фигу  
     STD_OUTPUT_HANDLE - Дескриптор устройства стандартного вывода. Вначале, это - дескриптор активного экранного буфера консоли, CONOUT$.  
     
    ну сами видите описание ну писец минимальное. буквальный перевод с английского и расхождение в терминологии. ничему верить нельзя все надо проверять опытным путем
     
    Добавлено:
    и еще такой момент - не удалось почему то добится чтоб в случае если ничего не выбрано не выдавалась пустая строка. и видимо перенос строки надо добавить, а может не надо даже не знаю

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 11:23 17-08-2010 | Исправлено: bomzzz, 11:27 17-08-2010
    slay1212

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите плиз чем лучше копировать очень большие 100-500 Гб файлы по сетке -
    xcopy robocopy или ? Сейчас используется xcopy  файло 300 гБ копируется более суток %) . Сетка 100 , операционка w2k3 r2 везде. Копирование идет батником

    Всего записей: 336 | Зарегистр. 28-05-2008 | Отправлено: 11:48 17-08-2010 | Исправлено: slay1212, 11:51 17-08-2010
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 11:51 17-08-2010
    bomzzz



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

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

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    офтопик, ты знаком с рамдиском? Она может из под комстроки подключать отключать часть оператив амятм как диск? Задаю вопрос здесь, так как в самом форуме тоже спрошу, но не всегда отвечают.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:03 17-08-2010 | Исправлено: king_stiven, 12:07 17-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    причем если расшарить папку в виртуалке запустить на виртуалке дос и начать копировать под досом файл в расшаренной папке, копируется быстрее чем теракопи копирует - вот такой нонсенс.
     
    Добавлено:
    king_stiven
    Подробнее...
     
    Добавлено:
    фигу а вот так уже не работает
    for /f "" %%I in ( 'CFOLDER.exe' ) do SET G=%%I
    echo.
    echo %G%

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

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

    Цитата:
    for /f "" %%I in ( 'CFOLDER.exe' ) do SET G=%%I  

    Двойные кавычки зачем тут?

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 13:37 17-08-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    не знаю. я не особо в батниках разбираюсь - нашел у себя пример в загашники как там так и сделал, без кавычек не работает. палка вертикальная тоже не помогаит
     
    Добавлено:
    ну это вообще две разные консоли, два разных окна - вызывающий батник и консоль 32 битного приложения. так как мы вызываем из одного кона другое то из дочернего мы может в родительское что то преедать. в 32 битном мы получаем хендл родительского окна и в него печатаем. то есть это не совсем те потоки - поэтому и не получается нифига.  
    Типа такого наверно
    for /f "" %%I in ( echo PATH ) do SET G=%%I  
     
    Добавлено:
    может морзянкой передать через код ошибки. код ошибки длинный достаточно

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



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    "E:\Program Files\DAEMON Tools Lite\DTLite.exe"  -mount 0,"F:\Randevu_cd2.iso"  
     
    Болезный какой-то вы мне батниг подсунули.
     
    При запуске и монтировании образа - игра виснет намертво. Тока резет спасает.
    А кому это надо!?

    Всего записей: 2030 | Зарегистр. 19-05-2008 | Отправлено: 14:29 17-08-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 14:32 17-08-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    снеси двойные кавычки.
    for /f %%i in ('echo path') do set var=%%i
     
    boy999
    Тут те bomzzz поможет только- это надо ловить окно ошибки и по его появлению делать unmount/mount...
    Если попросишь- может сделает экзешник)

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 14:39 17-08-2010 | Исправлено: us0r, 14:42 17-08-2010
    boy999



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r
    Окна ошибки нет.
    А екзешник я сам сделал. На него и хот-кеи повесил, но и раньше  игра висла с батнига.
    5 раз уже ребутился изза зависов.
    Доколе!?

    Всего записей: 2030 | Зарегистр. 19-05-2008 | Отправлено: 15:09 17-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