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

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

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

vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    ikif



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.
    Я БОЛЬШОЙ чайник в батниках.
    Помогите пожалуста.
    Мне дали попользоваться стареньким лэптопом , на котором установлен НОД32 , который закрыт паролем.
    Я не всегда подключен к сетке , поэтому он мне не всегда нужен( Антивирь).
    Прозьба к вам , как написать батник , чтобы выкидывать нод32 через КИЛЛ или тому подобное, и чтобы при перезагрузке НОД32 поднимался как обычно.
    Нод 32 вессии 3.0.566.0

    Всего записей: 164 | Зарегистр. 09-12-2006 | Отправлено: 22:55 18-06-2008
    GM07

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

    Цитата:
    Попробуй  
    rasdial inet /DISCONNECT  

    и так тоже пробовал: в батник поместил одну строку
    rasdial inet /DISCONNECT
    после запуска в окне cmd крутится
    ....
    c:\inet>rasdial /d
    c:\inet>rasdial /d
    c:\inet>rasdial /d
    ...................
    откуда это берется я вообще понять не могу...
     

    Всего записей: 76 | Зарегистр. 26-07-2004 | Отправлено: 23:40 18-06-2008
    igor_andreev

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

    Цитата:
    это шутка была?

    Нет. Батник висит и ничего не происходит - так может быть, если батник например назван rasdial.bat и в нем вызов команды rasdial (без расширения).
     
    Если rasdial /disconnect не сможет разьединить, примени:
    rundll32 iedkcs32.dll,CloseRASConnections

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 23:44 18-06-2008
    Collapse Troll

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

    Цитата:
    xcopy /q /e /r /y c:\folder d:\folder

    она копирует все файлы, не отображая имен на экран, с перезаписью.  
    А мне нужны из этой папки только определенные бэкапы и логи. Как мне сделать так, чтобы копировались только файлы содержащие "word" в названии, и текстовые *.txt файлы? В справке по copy масок вообще не вижу, а в xcopy есть только /exclude и нет /include..
     
    Добавлено:
    Ответ на второй вопрос нашел:

    Цитата:
    xcopy /q /e /r /y c:\folder\*.txt d:\folder

    А как скопировать файлы, содержащие "word" в названии?

    Всего записей: 791 | Зарегистр. 05-08-2006 | Отправлено: 13:35 19-06-2008 | Исправлено: Collapse Troll, 13:36 19-06-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Collapse Troll
     
    Ключи сам добавишь

    Код:
     
    C:\> for %i in (folder\*word* folder\*.txt) do xcopy %i d:\folder\folder\
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:57 19-06-2008
    GM07

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

    Цитата:
    rundll32 iedkcs32.dll,CloseRASConnections

    а куда эту констукцию поместить? просто в bat-файл одной строкой? просто щас не дома и экспериментировать не могу - хочу заранее все выяснить... сорри если вопрос глупый

    Всего записей: 76 | Зарегистр. 26-07-2004 | Отправлено: 15:10 19-06-2008
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GM07
    Вместо rasdial inet /DISCONNECT

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 15:27 19-06-2008
    Collapse Troll

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM, спасибо!
    Нашел как через xcopy и по маске тоже:

    Цитата:
    xcopy /q /e /r /y c:\folder\*word*.* d:\folder


    Цитата:
    xcopy /q /e /r /y c:\folder\*.txt d:\folder


    Всего записей: 791 | Зарегистр. 05-08-2006 | Отправлено: 16:03 19-06-2008
    z1riser

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    igor_andreev, спасибо большое!!! Чуть поправил работает!!
    Теперь усложняем задачу... 10 робокопий должны работать постоянно...Тоесть если один отработал( то остается 9) а надо, чтобы запускалась еще одна...
     
    А то получается чуть не то... Например запустилось 10, и скрипт ждет пока все 10 не закончат работу, а если одна робокопя долго-долго копит, простой получается...

    Всего записей: 22 | Зарегистр. 09-07-2007 | Отправлено: 17:49 19-06-2008
    Collapse Troll

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Не подскажете, можно ли перенаправить(или продублировать) вывод на консоль? Вроде в Unix это делается тривиально "file.exe > log.txt" или нечто вроде. А в Win2003 такое возможно?  
     
    То есть на данный момент дела обстоят так: батник запускается, отрабатывает и окошко закрывается. Делаю в конце выполнения батника timeout /t 28000 чтобы окошко еще 8 часов не закрывалось, читаю как отработали команды и закрываю его вручную. А как сделать нечто вроде лога?

    Всего записей: 791 | Зарегистр. 05-08-2006 | Отправлено: 18:34 19-06-2008
    01MDM



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

    Цитата:
    Не подскажете, можно ли перенаправить(или продублировать) вывод на консоль? Вроде в Unix это делается тривиально "file.exe > log.txt" или нечто вроде. А в Win2003 такое возможно?  

     
    Здесь тоже самое Продублировать при помощи mtee.exe (в шапке)
     

    Цитата:
    А как сделать нечто вроде лога?

    Перенаправляй вывод команд в лог
     
    file1.exe >>file.log
    file2.exe >>file.log
     
    или весь батник
     
    file.cmd >file.log

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:23 19-06-2008
    igor_andreev

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

    Цитата:
    Теперь усложняем задачу... 10 робокопий должны работать постоянно...Тоесть если один отработал( то остается 9) а надо, чтобы запускалась еще одна...  


    Код:

    @echo off  
     
    rem подправь под свои нужды, я на блокноте протестировал
    rem более-менее одновременно(от sleep зависит) около 10  
    rem экземпляров  будет запущено
    rem тут for /f "tokens=1 delims=\" %%a in ('net view ^| find "\\" и т.д.
     
    for /l %%a in (1 1 200) do (  
     start /min notepad.exe
     call :robo_count  
    )  
    goto :eof  
     
    :robo_count  
    set /a "count=0"
    for /f %%a in ('tasklist ^| find /i "notepad.exe"') do set /a "count+=1"  
    if %count% lss 10 goto :eof
    sleep 5
    goto :robo_count


    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 22:58 19-06-2008
    batniki



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли определить, сколько MB DDR на борту, поделить полученное значение на n
    и вывести... и еще узнать установлен ли directx?

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 00:24 20-06-2008
    alexvsm



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

    Код:
    for /f "skip=1 tokens=1,2 delims= " %%i in ('wmic memlogical get totalphysicalmemory') do (
        set /a pm=%%i/1024
        call:rep
        )
    goto:eof
    :rep
    echo Total Physical Memory is %pm% Mb

     
     
    Добавлено:

    Код:
    for /F "usebackq eol=; skip=3 tokens=1,2,3*" %%s IN (`reg query HKLM\SOFTWARE\Microsoft\DirectX /v Version`) DO (
        if -%%t-==-REG_SZ- set dx=%%u
    )
    if not -dx-==-- (
        echo DirectX: %dx%
    ) else (
        echo DirectX not found
    )


    Всего записей: 140 | Зарегистр. 23-11-2004 | Отправлено: 06:02 20-06-2008
    GM07

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

    Цитата:
    Вместо rasdial inet /DISCONNECT  

    работает! спасибо! но после запуска батника с одной строкой
    rasdial inet login pass
    в окне cmd крутится  
    ....
    c:\inet>rasdial /d  
    c:\inet>rasdial /d  
    c:\inet>rasdial /d  
    ....
    откуда это берется я вообще понять не могу... этой строки нет батнике!
    если вручную набрать команду (или скопировать из батника) в окне cmd то все в порядке - соединение происходит...  
    ниче понять не могу

    Всего записей: 76 | Зарегистр. 26-07-2004 | Отправлено: 06:36 20-06-2008 | Исправлено: GM07, 06:37 20-06-2008
    Elroir



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

    Цитата:
    откуда это берется я вообще понять не могу... этой строки нет батнике!

    У тебя где-то лежит батник rasdial.bat или rasdial.cmd. Вот он и запускается. Попробуй запустить поиск по дискам с этими названиями.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 12:05 20-06-2008
    Collapse Troll

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

    Всего записей: 791 | Зарегистр. 05-08-2006 | Отправлено: 13:23 20-06-2008
    batniki



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alexvsm, спасибо!
     
    set /p where= :
    "%tmpfolder%\7z.exe" x -r -y -o"%where%" "%tmpfolder%\*.7z"
     
    Как сделать, чтоб распаковывались несколько видов архивов?

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 00:19 21-06-2008
    alexvsm



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

    Цитата:
    set /p where= :
    "%tmpfolder%\7z.exe" x -r -y -o"%where%" "%tmpfolder%\*.7z"
     
    Как сделать, чтоб распаковывались несколько видов архивов?

    Если я правильно понял:
    Код:
    set /p where= :
    "%tmpfolder%\7z.exe" x -r -y -o"%where%" "%tmpfolder%\*.7z"
    "%tmpfolder%\7z.exe" x -r -y -o"%where%" "%tmpfolder%\*.zip"
    "%tmpfolder%\7z.exe" x -r -y -o"%where%" "%tmpfolder%\*.rar"
     

    Всего записей: 140 | Зарегистр. 23-11-2004 | Отправлено: 06:31 23-06-2008
    boss911



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

    Код:
    BatchFile.cmd /CheclCopy

    Данный ключ командной строки, должен включать следующую команду внутри батника (привожу кусок скрипта):

    Код:
    :Repl_F
    Copy /y %2 "%~dp1" 1>nul 2>&1
    if ErrorLevel 1 (
     Zap.exe  "%1"  >nul
     Copy /y %2 "%~dp1" 1>nul 2>&1
     Echo %1 >> Zap.txt
    )

    Если же батник запускается без ключа /CheclCopy , то команда (Echo) внутри батника не обрабатываться НЕ будет. Реально?

    Всего записей: 3701 | Зарегистр. 29-01-2005 | Отправлено: 17:42 23-06-2008 | Исправлено: boss911, 17:46 23-06-2008
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru