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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:51 18-05-2009
    strat

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

    Цитата:
    Но у меня он почему-то не работает.

    и что же он выдает? может вы не принимаете лицензию в 8 пункте  
     

    Цитата:
    Note: You may be asked to accept the licence agreement for Junction after you start the batch file.

    Всего записей: 459 | Зарегистр. 27-12-2005 | Отправлено: 20:00 18-05-2009
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    anachrom
    но ведь в такой ситуации все делается еще проще вот готовый вариант
     
    Добавлено:
    Тока не надо применять точку в качестве разделителя - это неудачный вариант...

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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 20:22 18-05-2009 | Исправлено: yurkesha, 11:47 19-05-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ghosty
    Пробовать, я его не пробовал. Вот что сразу бросилось в глаза, в батнике назначаются права на папки, но названия локальных групп по-английски. Если виндоус русский, то соответственно батник не сработает.
     
    Посмотри вывод `net localgroup`
     
    И вообще там не надо использовать ни cacls.exe ни subincl.exe, т.к утилита xcopy  с ключем /O и так копирует файлы, сохраняя ACL. Кроме того. Специально проверил - связь может создать только пользователь из группы "Администраторы" и права на эту связь назначаются точно такие, как и на папку Windows. Т.е нет необходимости в использовании данных утилит.
     
    Можно смело удалять из батника все с этим связанное.  
     
    И здесь ошибка, если конечной папки нет, то надо либо ее заранее создать, либо обозначить целевую папку слешем

    Код:
     
    xcopy "%windir%\installer" "%target%\installer\" /E /I /H /K /O
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:28 18-05-2009 | Исправлено: 01MDM, 20:41 18-05-2009
    king_stiven

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

    Цитата:
    И здесь ошибка, если конечной папки нет, то надо либо ее заранее создать, либо обозначить целевую папку слешем  

    Если это не какой то особенный пример. то в обычных батниках никогда в конце слэш не испоьзую.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:50 18-05-2009
    01MDM



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

    Цитата:
    Если это не какой то особенный пример. то в обычных батниках никогда в конце слэш не испоьзую.

     
    Попробуй:

    Код:
     
    md test
    cd.>test\1.txt
     
    :: 1 вариант
    xcopy /e test test_1
     
    :: 2 вариант
    xcopy /e test test_1\
     
    :: При условии, что изначально папка test_1 не существует  
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:02 18-05-2009
    ghosty



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

    Цитата:
    и что же он выдает? может вы не принимаете лицензию в 8 пункте

    Да, забыл сказать. Он тупо не находит файл там, где он лежит. Говорит:
    The system cannot find the file specified.
     
    В комстроке:

    Код:
    >"c:\program files\Windows Resource Kits\Tools\subinacl.exe" > NUL
    The system cannot find the file specified
    >echo %errorlevel%
    0

     
    Причем такая фигня у меня именно на eee PC. Попробовал на десктопе - находит. Ничего не понимаю В чем может быть проблема?
     

    Цитата:
    И вообще там не надо использовать ни cacls.exe ни subincl.exe, т.к утилита xcopy  с ключем /O и так копирует файлы, сохраняя ACL. Кроме того. Специально проверил - связь может создать только пользователь из группы "Администраторы" и права на эту связь назначаются точно такие, как и на папку Windows. Т.е нет необходимости в использовании данных утилит.
    Похоже, если бы было все так просто, то проблем с передвижением папки %windir%/installer ни у кого не было бы. А так, если ее просто передвинуть и создать точки соединения, то Installer все переустановит обратно, удалив весь контент из передвинутой папки, после чего начнутся конкретные косяки. Именно поэтому права и нужно явным образом установить. (Как я это понимаю).
     

    Цитата:
    Рапидшара отстой, купи 701 азус как у меня и не парься
    У меня 900 - какая разница? 4 Gb системный диск. После установки всего майрософтовского добра папка %windir%/installer разрастается более полутора гигов. И делать ей на быстром жестком диске ну совсем нечего.
     
     
    Добавлено:
    Да, винда у меня английская. А как сделать универсальный батник?

    ----------
    пропадет-растает

    Всего записей: 6808 | Зарегистр. 21-09-2002 | Отправлено: 21:07 18-05-2009
    king_stiven

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

    Цитата:
    меня 900 - какая разница? 4 Gb системный диск. После установки всего майрософтовского добра папка %windir%/installer разрастается более полутора гигов. И делать ей на быстром жестком диске ну совсем нечего.

    Давай лучше на ЕЕЕ форуме об этом. Люди как то обходят, у меня она маленькая не знаю почему.
    01MDM
    ты забыл ключ /I

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 21:18 18-05-2009
    Snarrrk

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте! Есть вопрос:  
    После визита на мой компьютер хитрого вируса ahsam компьютер стал видеть бат файлы, как просто текстовые документы, и открывать исключительно блокнотом. Не без помощи бубна вирус удалось извести, но ассоциация файла сбилась. В свойствах папки указал открывать файлы с таким расширением с помощью cmd.exe, но это не помогло, консоль их всё равно не видит. Подозреваю, что для решения проблемы надо в меню сопоставления файлов привязать данное расширение к какому-либо типу файлов, но я не знаю, как в данном меню этот тип файлов называется. Не подскажете?
     
    Заранее спасибо за ответ!

    Всего записей: 65 | Зарегистр. 11-08-2007 | Отправлено: 22:36 18-05-2009
    LetMyPeopleGo



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Для понимания ошибки нада включить печать - @echo on, выбрать папку назначения в самом батнике, строка set target=D:\junctions, запустить файл c:\move_win_installer_folder.bat > c:\1.txt и запостить файл лога 1.txt сюда.

    Всего записей: 117 | Зарегистр. 14-09-2005 | Отправлено: 00:25 19-05-2009
    ghosty



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LetMyPeopleGo
    Спасибо. Только что мне удалось найти причину ошибки. Но она до ужаса странная.  
    Почему-то винда не воспринимала оператор >NUL после пути  - не могла найти указанные файлы, если в конце строки стоял этот оператор. Не могу себе представить, как это интерпретировать
     
    Хорошо, удалил все >NUL из батника. Запустил. Теперь у меня есть два каталога installer - прежний и новый. Т.е. прежний удален не был. И оба этих каталога недоступны для просмотра и в них, якобы, ничего нет (size=0 bites). При вызове появляется сообщение  

    Цитата:
    D:\junctions\installer is not accessible.
    The name of the file cannot be resolved by the system

     
    P.S. В синтаксисе бат-файлов я совсем не силен, поэтому заранее прошу простить мне эту слабость

    ----------
    пропадет-растает

    Всего записей: 6808 | Зарегистр. 21-09-2002 | Отправлено: 01:10 19-05-2009 | Исправлено: ghosty, 01:13 19-05-2009
    Mr_Hat



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    hI All!  
    доброго времени суток.

    Цитата:
     
    Необходимо решение для экспортирования из реестра всех записей с маркером
    "Forvardt Software", с дальнейшим сохранением.
     
    С помощью батника производим поиск в реестре по заданой строке "Forvardt Software" ,  
    при совпадении ключи и параметры сохраняются в REG файл  
     

    Код:
     
    @echo on  
    del /f /q c:\*.tmp  
    REG EXPORT HKLM c:\HKLM.tmp  
    REG EXPORT HKCU c:\HKCU.tmp  
    REG EXPORT HKCR c:\HKCR.tmp  
    REG EXPORT HKU c:\HKU.tmp  
    REG EXPORT HKCC c:\HKCC.tmp  
    echo. Windows Registry Editor Version 5.00 >c:\Forvardt.reg  
    echo. >>c:\Forvardt.reg  
    more c:\HKLM.tmp HKCU.tmp HKCR.tmp HKU.tmp HKCC.tmp | find /i "Forvardt Software" >>c:\Forvardt.reg  
    del /f /q c:\*.tmp

     

    Не работает как задумывалось,
     подкиньте свежих идей или готовых решений, плиз!!!  

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 04:08 19-05-2009 | Исправлено: Mr_Hat, 04:21 19-05-2009
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сделал код в случае ошибки, реагирующий на нажатие клавиши, только не могу найти данных по команде !random!%%9 чтоб правильно её задействовать.

    Цитата:
    @echo off
    color 3b
     
    :error
    IF NOT EXIST "%SystemRoot%" goto exit
    color 0c
    Set /a bg=!random!%%9
    Set /a font=!random!%%9
    color %bg%%font%
    CLS
    echo.
    echo.
    echo.
    echo ===============================================================================
    echo.
    echo                г¤ «ЁвҐ Ї ЇЄг %SystemRoot% ЇҐаҐ¤ Їа®¤®«¦Ґ-ЁҐ¬
    echo.
    echo ===============================================================================
    echo.
    echo.
    pause
    setlocal enabledelayedexpansion
    goto error
    :exit
    exit

    Mr_Hat
    У меня скрипт совсем не работает, и судя по батнику из файла будут вытаскиваться только строки с найденным текстом и всё в одну кучу. А ведь у рег-файла есть формат записи.
    Батником посоветовать не могу, но в программе "Registry Workshop" используешь поиск, далее выделяешь найденные строки и в контестном меню выбираешь "экспорт", получается корректный рег-файл.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 07:37 19-05-2009 | Исправлено: AZJIO, 08:26 19-05-2009
    anachrom

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

    Цитата:
    Тока не надо применять точку в качестве разделителя - это неудачный вариант...

    А почему?
    А вообще здорово получилось. Спасибо большое. Вот только, еще бы лог бэкапа прикрепить. Как раньше, не получается.

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 10:19 19-05-2009 | Исправлено: anachrom, 10:31 19-05-2009
    Johny_x3mal



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток!
        Не кричите сильно, но перебирать 6 частей по сотне страниц убьет слишком много времени, поэтому, прошу помочь.
        Нужен батник, который бы проверял на компьютерах в сети в диапазоне 192.168.3.4-192.168.3.254 наличие файла ХХХХ.exe на системном диске и в отсутствии данного файла копировал на системный диск полностью папку YYYYY_XXX с сетевого диска Z:. А так же как-нибудь создать таблицу исключений, т.е. те IP адреса, которые проверять не надо.  
       Я как бы не очень в этом, но как сделать поиск по одному компу и учесть несколько условий, даже таблицу исключений сделать - я представляю как, а вот как на всех ....  
     
    Добавлено:
    А вообще, ещё и второй вариант можно сразу  
       При нахождении нужного файла, скопировать весь каталог с общесетевого диска на системный диск с заменой существующих файлов, так же по всей сети.

    Всего записей: 222 | Зарегистр. 07-09-2005 | Отправлено: 10:21 19-05-2009
    anachrom

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    yurkesha, king_stiven
    Еще одна проблема найдена.Некоторые файлы с рускими именами отображаются уж очень коряво. Причем только некоторые. Это может быть из-за кодировки имен файлов?

    Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 11:23 19-05-2009
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    anachrom
    ты случайно не Win1251 пытаешься использовать?
    Лучше не стоит - даже "chcp 1251" проблему до конца не решает... Так что лучше не мудрить а использовать в CMD и в инишнике везде cp866(oem/dos).
    А в качетве лога лог архивации тебя устроит?
     
    Добавлено:
    anachrom
    Все - кажись понял в чем затруднение: добавь ключ -scsDOS(-scsWIN) для архиватора - в зависимости от кодировки listbackup.txt и все встанет на свои места...
     
    Добавлено:
    Исправил скрипт выше и дописал перенаправление для лога

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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 11:31 19-05-2009
    Johny_x3mal



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я тут нарыв PSTools там есть утилиты, которые могут помочь.
    Идея такая:
    Поиск компа (по IP или просто поиск по компам в сети по имени)
    далее - если файл найден goto метка0
    :метка0 завершить работу файла (приложения)
                скопировать с заменой с такого-то места
    если не найден файл goto метка1
    :метка1 если не найден файл перенести файл/каталог на C$
     
    что - то типа того.
    Помогите реализовать.

    Всего записей: 222 | Зарегистр. 07-09-2005 | Отправлено: 12:05 19-05-2009
    Maza_Faka



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

    Цитата:
    Поиск компа

    Цитата:
    если файл найден

    Так, что же искать конкретно? Компьютер или файл?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:23 19-05-2009
    Andrey128

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как вывести объем диска и сколько свободно (или занято) в мегах (или лучше гигах) не используя сторонних утилей для Windows XP?
    Нашел такую команду:

    Код:
    fsutil volume diskfree c:
    Всего свободно байт: 5961420800
    Всего байт: 32210161664
    Всего доступно свободных байт: 5961420800
     

    Выводит она то что нужно, но к сожалению в байтах, а хочется более читабельно.
    Или как результат перевести в гигабайты?

    Всего записей: 408 | Зарегистр. 16-01-2003 | Отправлено: 15:52 19-05-2009
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru