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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброго дня уважаемые, возник вопрос, есть домен под управлением win 2k3, клиенты xp. При входе в домен запускается батник который создаёт папку с именем пользователя на сетевом диске.  Собственно вопрос, можно ли сделать чтоб этот же батник создавал пользователю ярлык для этой папки на рабочем столе и называл папку не %username%, а по данным из учётки домена (например Вася Пупкин).

    Всего записей: 11 | Зарегистр. 26-04-2010 | Отправлено: 09:20 22-07-2010
    lorents



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

    Цитата:
    Это уже к микрософту вопрос  

    понял, оказалось эти символы не понимает не только bat, но и некоторые программы.

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 09:42 22-07-2010
    res2001



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

    Цитата:
    понял, оказалось эти символы не понимает не только bat, но и некоторые программы.

    которые используют те же системные функции доступа к файлам что и cmd.
    Win32 API он тааакой загадочный, там работает, там нет, там рыбу заворачивали.
     
    Добавлено:
    olololishe21

    Цитата:
    можно ли сделать

    Можно!
    Для создания ярлыка можно использовать nircmd или что-нить более специализированное.
    Для запросов в AD есть встроенные средства (dsget, dsquery), но у меня нет под рукой AD, поэтому конкретней не скажу.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 09:54 22-07-2010
    Melhior



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    господа!
    что-то я никак не докумекаю, как сделать несложную вроде бы вещь
    диспозиция такова.
    имеется родительская папка, так сказать, оттуда будет запускаться батник. в родительской папке есть подкаталог. в нём файлы двух типов (по расширению). необходимо файлы одного типа задвоить, прибавив к имени символ. то есть были, допустим file01.txt и file02.txt, а нужно их скопировать в тот же подкаталог, но с именами file01z.txt и file01z.txt, например. символ, добавляемый к имени файла для задвоения, один для всех.
    спасибо.

    Всего записей: 1255 | Зарегистр. 11-01-2004 | Отправлено: 14:03 22-07-2010
    res2001



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

    Код:
    @echo off
    for %%a in (c:\1\dir\*.txt) do copy /b /y %%a %%~dpnaz.txt
     

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:40 22-07-2010 | Исправлено: res2001, 14:41 22-07-2010
    garri671



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Попробовал последний пример, все работает, только количество строк должно быть 60000, а в посладнем что останется но менее 60000

    Всего записей: 133 | Зарегистр. 18-07-2007 | Отправлено: 14:45 22-07-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Только боюсь, как бы вновь скопированные файлы в обработку фора не попали - расширение то одно и то же.
    Думаю есть смысл в форе копировать с другим расширением, а в конце переименовать все по маске.
     
    Добавлено:
    garri671
    Если надо, сделаю.
    Просто я тестировал на небольших файлах и у меня возникла ситуация: в случае если общее количество строк/количество файлов < количества файлов, то в последнем файле может оказаться строк больше чем во всех предыдущих. Поэтому сделал так как сделал.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:46 22-07-2010
    garri671



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

    Цитата:
    Совершенно верно!  
    как-то так:  

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

    Всего записей: 133 | Зарегистр. 18-07-2007 | Отправлено: 15:11 22-07-2010
    res2001



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

    Код:
    @echo off
    setlocal enabledelayedexpansion
    set "max=10"
    set "allfile=.\1\txtall.txt"
    set "allfile2=.\1\txtall1.txt"
    set "indir=.\1\"
    set "outdir=.\2\"
     
    2>nul del /f/q %allfile%
    for /l %%a in (1;1;%max%) do >>%allfile% type %indir%txt%%a.txt
    findstr /n /r ".*" %allfile% >%allfile2%
    set /a "count=0"
    for /f "tokens=2 delims=:" %%a in ('find /c /v "" %allfile2%') do set /a "count=%%a"
    set /a "p=count/(max-1)"
    set /a "fn=1"
    set /a "it=0"
    for /f "tokens=1,* delims=:" %%a in (%allfile2%) do (
        if !it! geq !p! set /a "it=0" & set /a "fn+=1"
        if %max% lss !fn! goto :step2
        >>%outdir%txt!fn!.txt echo.%%b
        set /a "it+=1"
    )
    :step2
    set /a "it = p * max"
    more +%it% %allfile% >>%outdir%txt%max%.txt
    del /f/q %allfile%
    del /f/q %allfile2%

    Изменил способ подсчета общего количества строк.
    Заметил что find вставляет в начале 2 служебных строки, поэтому в %allfile2% получалось на 2 строки больше. В связи с этим заменил find на findstr.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 15:21 22-07-2010 | Исправлено: res2001, 15:26 22-07-2010
    Iacoyn



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите - надо из bat/cmd узнавать расположение папки с ярлыками рабочего стола
    есть путь в реестре
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop=
    вот это значение надо присвоить какой-нибудь переменной для последующего использования внутри этого же батника.
    Спасибо!

    Всего записей: 2381 | Зарегистр. 07-05-2002 | Отправлено: 16:12 22-07-2010
    res2001



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

    Код:
    @echo off
    for /f "tokens=2,*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop ^| more +4') do set desk=%%b
    set desk

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 16:33 22-07-2010 | Исправлено: res2001, 09:37 23-07-2010
    garri671



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

    Цитата:
    в последнем файле остаток:


    Цитата:
    Заметил что find  

    Батник создает 10 файлов с 1-10, в первых девяти записано по одной строке, в 10 файле 65536 строк.

    Всего записей: 133 | Зарегистр. 18-07-2007 | Отправлено: 11:45 23-07-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    garri671
    Ну с 10 файлами понятно - переменную max отрегулируй.
    А по остальному ... похоже на переполнение.
    У тебя в итоговом файле сколько строк получается? и сколько всего файлов?
     
    Добавлено:
    Проверил на больших файлах, >60000 строк в каждом - работает как надо.
    Проверил переполнение - это не оно, думал переменные двухбайтовые, оказалось нет, обычный signed int - 4 байтовый со знаком. Диапазона значений хватит за глаза.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 11:54 23-07-2010
    max200701

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет,есть батник такого содержания

    Код:
    @echo off    
    :inetchk
    echo TEST INTERNET                 %time:~0,-3%
    echo --------------------------------------
    ping www.ya.ru|findstr /i "TTL">nul
    if "_%errorlevel%" equ "_0" (      
    echo INTERNET OK!!!                %time:~0,-3%
    echo --------------------------------------
    echo PAUSE 120 sec...
    echo --------------------------------------
    sleep 120
    goto:inetchk  
    ) else (
    echo INTERNET ERROR                %time:~0,-3%
    echo --------------------------------------  
    :loop
    echo REBOOT MODEM                  %time:~0,-3%
    echo --------------------------------------
    ZTnBatch -h 192.168.1.1 -p **** -c "sys reboot 0">nul  
    if not errorlevel=0 (  
    echo REBOOT ERROR!!! RESTART...    %time:~0,-3%
    echo --------------------------------------
    goto loop  
    )  
    echo REBOOT OK!!!                  %time:~0,-3%
    echo --------------------------------------
    echo WAIT ~120 sec...
    echo --------------------------------------
    sleep 120
    goto:inetchk  
    )

    Очень надо роботу этого скрипта постоянно писать в лог файл,чтобы можно было посмотреть его роботу за целые сутки ,а на следующий день создать новый лог файл,имя лог файлу желательно давать дату,лог файл должен создаватся в той папке где находится сам скрипт.Прошу у вас помощи так как сам ничё не смыслю в этом ,заранее спасибо

    Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 19:50 23-07-2010 | Исправлено: max200701, 19:52 23-07-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    max200701 ко всем строкам echo четотам %time:~0,-3% допиши копии с перенаправлением в файл, типа так:

    Код:
    echo REBOOT OK!!!                  %time:~0,-3%  
    1>>%date:~6,4%-%date:~3,2%-%date:~0,2%.txt echo REBOOT OK!!!                  %time:~0,-3%


    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 20:43 23-07-2010 | Исправлено: wolf0425, 20:44 23-07-2010
    max200701

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

    Код:
    ЋЎ¬Ґ- Ї ЄҐв ¬Ё б ya.ru [87.250.251.3] Ї® 32 Ў ©в:
     
     
     
    ЋвўҐв ®в 87.250.251.3: зЁб«® Ў ©в=32 ўаҐ¬п=66¬б TTL=54
     
    ЋвўҐв ®в 87.250.251.3: зЁб«® Ў ©в=32 ўаҐ¬п=66¬б TTL=54
     
    ЋвўҐв ®в 87.250.251.3: зЁб«® Ў ©в=32 ўаҐ¬п=70¬б TTL=54
     
    ЋвўҐв ®в 87.250.251.3: зЁб«® Ў ©в=32 ўаҐ¬п=68¬б TTL=54
     
     
     
    ‘в вЁбвЁЄ  Ping ¤«п 87.250.251.3:
     
        Џ ЄҐв®ў: ®вЇа ў«Ґ-® = 4, Ї®«гзҐ-® = 4, Ї®вҐап-® = 0 (0% Ї®вҐам),
     
    ЏаЁЎ«Ё§ЁвҐ«м-®Ґ ўаҐ¬п ЇаЁҐ¬ -ЇҐаҐ¤ зЁ ў ¬б:
     
        ЊЁ-Ё¬ «м-®Ґ = 66¬бҐЄ, Њ ЄбЁ¬ «м-®Ґ = 70 ¬бҐЄ, ‘।-ҐҐ = 67 ¬бҐЄ
     
    INTERNET OK!!!                20:13:34
    PAUSE 120 sec...  
     


    Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 21:15 23-07-2010
    wolf0425



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

    Цитата:
    wolf0425 спасибо большое всё работает ,вот токо русские буквы в лог не пишет ,а пишет какието кракозябры  
    гонишь ты, это русские буквы и есть, просто ты их пишешь в лог в 866 кодировке (по умолчанию для консоли) а смотришь в 1251 (нотепадом, наверно).
    допиши в начало батника строку
    1>nul chcp 1251 - будет и писаться в виндовой.
    и фонт у окошка выстави уникодный (люсиду) чтоб на экране 1251 без кракозябр показывало, а то по умолчанию фонт терминал - неуникодный нифига, только ОЕМ (866).
     
     
    а нафига ты сам вывод пинга в лог пишешь то? и echo хватило бы

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 23:49 23-07-2010 | Исправлено: wolf0425, 13:48 24-07-2010
    max200701

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

    Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 12:59 24-07-2010
    LENIN87



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, подскажите как решить задачу, возможно не батником. Есть упёртая железка, которая в нужном мне слоте не пашет. После установки дров работает, но стоит только перезагрузиться и система в последний момент загрузки залипает. Скорее всего конфликт irq, но в биосе p5k-e я не нашел места, где irq резервировать. Система грузится, если злосчастное устройство перед перезагрузкой/выключением отключать в диспетчере устройств. А после загрузки соответственно включать. Так вот, каким образом можно автоматизировать включение/выключение устройства, подобно тому, как это делается в диспетчере устройств. Вот подумал о варианте через батник, помню, что их можно как-то автоматически при загрузке/выходе из ОС выполнять.

    Всего записей: 71 | Зарегистр. 16-07-2008 | Отправлено: 00:01 26-07-2010
    Iacoyn



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

    Цитата:
    Так вот, каким образом можно автоматизировать включение/выключение устройства, подобно тому, как это делается в диспетчере устройств. Вот подумал о варианте через батник, помню, что их можно как-то автоматически при загрузке/выходе из ОС выполнять.

    Используйте Microsoft devcon.exe из коммандной строки.
    пример использования
    перед выключением
    devcon.exe disable "PCI\VEN_8086&DEV_293E"
    после включения
    devcon.exe enable "PCI\VEN_8086&DEV_293E"
    Загрузка выгрузка при включениии/выключении в групповой политике.
    Конфигурация компьютера
    Конфигурация Windows
    Сценарии (запуск/завершение).
     

    Всего записей: 2381 | Зарегистр. 07-05-2002 | Отправлено: 01:14 26-07-2010 | Исправлено: Iacoyn, 01:17 26-07-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