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

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

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

vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 17:45 04-09-2010 | Исправлено: Accessor, 18:04 28-09-2010
    Free_Soft



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

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 09:15 17-11-2010
    stydent62

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как решить такую задачу с помощью bat-файла. В одной директории несколько папок (есть вложенные) с файлами. Необходимо скопировать файлы по маске *.usr из всех папок (подпапок ) в одну папку и при совпадении имени файла чтобы файл автоматически переименовывался. Заранее благодарю.  
    P.S. total commander для решения задачи не подходит, нужно именно батником.

    Всего записей: 25 | Зарегистр. 02-05-2007 | Отправлено: 13:45 17-11-2010
    01MDM



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

    Код:
     
    @echo off
    setlocal
    1>nul chcp 1251
     
    for /r "C:\Folder 1" %%i in (*.usr) do call:copy "%%i"
    goto:eof
     
    :copy
    set "toCopy=%~nx1"
     
    :check
    if exist "C:\Folder 2\%toCopy%" (
     
        set "toCopy=0%toCopy%"
        goto:check
     
    )    
     
    copy %1 "C:\Folder 2\%toCopy%"
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:19 17-11-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    есть некий reg файл. нужно строки вида
    Код:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node  
    преобразовать в
    Код:
    HKEY_LOCAL_MACHINE\SOFTWARE
    и наоборот. как это лучше сделать? Учитывая, что это только часть параметра

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 21:40 17-11-2010
    wolf0425



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

    Цитата:
    Нужно строки вида преобразовать в и наоборот
    например так:

    Код:
    sed "s/HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node/HKEY_LOCAL_MACHINE\\##/gi; s/HKEY_LOCAL_MACHINE\\SOFTWARE/HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node/gi;  s/HKEY_LOCAL_MACHINE\\##/HKEY_LOCAL_MACHINE\\SOFTWARE/gi" <file.txt >file2.txt


    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 23:51 17-11-2010 | Исправлено: wolf0425, 23:51 17-11-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    спасибо, буду пробовать. Еще столкнулся с проблемой: при экспорте ветки реестра в reg файле вместо кириллицы крякозябры.

    Код:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Registration\{xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}]
    "ProductCode"="{90140000-0011-0000-0000-0000000FF1CE}"
    "ProductName"="Microsoft Office профессиональный плюс 2010"
    "ProductNameBrand"="Microsoft Office профессиональный плюс 2010"
    "SuiteName"="Включено в Microsoft Office профессиональный плюс 2010"

    причем иногда все таки экспортируется нормально. В чем может быть дело?

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 00:18 18-11-2010
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft
    Как экспортируете? По-умолчанию (используется Unicode), либо в формате 9x/NT4 (используется ANSI)?

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 05:12 18-11-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BVV63
    REG EXPORT. Можно как то поменять кодировку? или еще как то можно экспортировать?

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 09:47 18-11-2010
    iMASTERVP

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста!! уменя такая проблема    
    1. я Чайник в этом деле!!  
    2. необходимо чтобы бат файл выполнял следующее:  
    операционная система WIN XP SP3  
     
    1. сразу после загрузки системы запускал сетевое подключение!  
    2. начинал пинговать определенный ресурс,  
    3. если пинги пошли запускал браузер IE  
    4. если браузер не отображает страниц чтобы обновлялся до тех пор пока не обновит!  
    2. если пинги пропали на какоето время, чтобы перезапустил сетевое подлючение и браузер или перезагрузил компьютер  
     
    Вот такая штука мне нужна очень очень!!!! помогите пожалуйста если можете!! за ранее спасибо

    Всего записей: 2 | Зарегистр. 18-11-2010 | Отправлено: 10:00 18-11-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft
    Цитата:
    или еще как то можно экспортировать?
    можно с помощью
    Код:
    regedit.exe /s regfile.reg


    Всего записей: 2861 | Зарегистр. 31-10-2003 | Отправлено: 10:12 18-11-2010
    Free_Soft



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

    Цитата:
    regedit.exe /s regfile.reg

    это импорт файла

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 10:16 18-11-2010 | Исправлено: Free_Soft, 10:18 18-11-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft
    сорри, надо вот так:
    regedit /ea RegFile.reg HKEY_CURRENT_USER\Software\...

    Всего записей: 2861 | Зарегистр. 31-10-2003 | Отправлено: 10:42 18-11-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Accessor
    Да, теперь все ок. Пасиб
     
    Добавлено:
    а можно ли из батника узнать язык системы?

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 11:06 18-11-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft
    http://bomz-co.narod.ru/current.exe - вот эта не будет зависеть от языка
     
    Добавлено:
    но лучше проверить. англоязычная винда есть в HirenBootCD
     
    Добавлено:
       
     
    убрать кнопку создать папку можно так - просто другое окно использовать которое вот так выглядит
     
    Добавлено:
    из батника язык можно узнать - как не помню. не сталкивался с необходимостью
     
    Добавлено:
    сделал чтоб кнопки не было это параметром меняется. не помню ни фига уже.
     
    Добавлено:
    но оно не по центру екрана стало вылазить
     
    Добавлено:
    оно теперь привязано к батнику
     
    Добавлено:
    проверяй пока я помню как делать

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



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    Это окно даже лучше.

    Цитата:
    оно теперь привязано к батнику  

    В смысле должно открываться из той же директории? Тогда не работает

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 18:42 18-11-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    отцентровать тут надо разбираться.
    http://www.manhunter.ru/assembler/236_tyuning_funkcii_shbrowseforfolder.html
     

    Цитата:

        .386
        .model flat,stdcall
        option casemap:none
        include \masm32\include\windows.inc
        include \masm32\include\user32.inc
        include \masm32\include\kernel32.inc
        include \masm32\include\shell32.inc
        includelib \masm32\lib\user32.lib
        includelib \masm32\lib\kernel32.lib
        includelib \masm32\lib\shell32.lib
    include     \masm32\include\masm32.inc
    includelib  \masm32\lib\masm32.lib
     
    .data?
    PATH            db MAX_PATH dup(?)
    String            db MAX_PATH dup(?)
    brinfo            BROWSEINFO <>
    mestitle        dd ?
    ;StringLen        dd ?
     
    .data
    ;OKButton        db  12h, 04h, 4Bh, 04h, 31h, 04h, 40h, 04h, 30h, 04h, 42h, 04h, 4Ch, 04h,  0, 0
     
    .code
    start:  
     
        invoke GetCommandLine            ; вызываем функцию командной строки в eax возврщается смещение
        Call MyProc                ; проматываем до первого обратного слеша
        mov ebx, eax                ; сохраним смещение на первый параметр
        Call MyProc                ; проматываем до второго слеша
        mov mestitle, eax            ; сохраним смещениена второйпараметр
                            ; заполним BROWSEINFO структуру
        mov brinfo.hwndOwner, 0            ; хендл родительского окна, здесь - ноль.
        mov brinfo.pidlRoot,0            ; PIDL - характеризует корневую папку с которой начинается обзор
        mov brinfo.pszDisplayName, offset PATH    ; указатель строки выбранного пути
        mov brinfo.lpszTitle, ebx        ; указатель строки которая выводится над окном дерева папок
        mov brinfo.ulFlags, BIF_RETURNONLYFSDIRS; BIF_USENEWUI    ; флаги которые определяют функции и вид диалогового окна
        mov brinfo.lpfn, BrowseCallbackProc    ; указатель пользовательской функции события, которую вызывает диалоговое окно
        mov brinfo.lParam, NULL            ; An application-defined value that the dialog box passes to the callback function, if one is specified in lpfn.
        mov brinfo.iImage, NULL            ; An integer value that receives the index of the image associated with the selected folder, stored in the system image list.
     
        invoke SHBrowseForFolder, ADDR brinfo    ; вызываем функцию окна выбора папки
        .IF eax!=0                ; 0 - ничего не выбрано
        push eax                ; сохраним ID папки
        invoke SHGetPathFromIDList,eax,addr PATH    ; конвертируем ID в путь
        invoke CharToOem, addr PATH, addr String    ; меняем кодировку строки пути
     
        invoke lstrlen,addr PATH
        lea ebx, String
        add ebx,eax
        mov byte ptr[ebx],0Dh
        inc ebx
        mov byte ptr[ebx],0Ah
        inc ebx
        mov byte ptr[ebx],0
        invoke  StdOut,ADDR String
     
        pop eax                    ; вытащим ID папки
        .ENDIF
        invoke    ExitProcess,eax            ; выходим из программы, eax - код возврата
     
    BrowseCallbackProc proc hwnd:DWORD,uMsg:DWORD,lParam:DWORD,lpData    ; подпрограмма диалогового окна выбора папки
        .IF uMsg==BFFM_INITIALIZED
    ;        invoke  SendMessage,hwnd,BFFM_SETOKTEXT,NULL,addr OKButton    ; меняем текст на кнопке ОК (юникод)
            invoke  SetWindowText,hwnd,mestitle                ; меняем заголовок окна
        .ENDIF
            xor     eax,eax
            ret
    BrowseCallbackProc endp
     
    MyProc proc            ; подпрограмма разбора командной строки
    next:                ; метка цикла
        cmp byte ptr[eax],'/'    ; знак равен обратному слешу?
        je found        ; если да выходим
        cmp byte ptr[eax],0    ; знак равен 0 - конец строки?
        jz esit            ; если да выходим из подпрограммы
        inc eax            ; увеличиваем смещение на 1 - переводим указатель на следующий знак
        jmp next        ; в начало цикла
    found:
        mov byte ptr[eax], 0    ; заменяем обратный слеш на 0 - делитель строки
        inc eax            ; переводим укзатель на следующий знак
    esit:
        Ret            ; возвращаемся в программу
    MyProc endp
     
    end start            ; конец ассемблирования
     
    ; ассемблирование
    ;C:\masm32\bin\ml.exe /c /coff current.asm  
    ;C:\masm32\bin\link.exe /subsystem:console current.obj
    http://www.masm32.com/masmdl.htm

     
     
     
    Добавлено:
    нет - то окно вроде как открывалос ьв центре екрана , а это всегда приялпано к батнику.
     
    Добавлено:
    не могу понять почему. надо мсдн читать.
     
    http://msdn.microsoft.com/en-us/library/bb762115%28VS.85%29.aspx

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



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

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 18:45 18-11-2010
    bomzzz



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

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



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

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 18:54 18-11-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    щас попробую - отцентровать просто кстати
     
            ; Установить окно по центру экрана
            stdcall WindowToCenter,[hwnd],0
     
    Добавлено:
    скачай по новой и проверяй как работает вроде нет конфликтов
     
    ECHO OFF
    COLOR 9F
    CLS
    FOR /f "delims=*" %%I IN ( 'current.EXE /TITLE/SUBTITLE/C:\Temp' ) DO SET G=%%I
    ECHO %G%
    pause
     
    Добавлено:
    параметр я опустил - работает, задал несуществующую папку- работает. вроде правильно всё
     
    Добавлено:
    будет ли она на другиз системах работать я не знаю потому что проверить не могу.ю надпись по русски я убрал - остальные защиты в систему. как будет работать строка  
    invoke CharToOem, addr PATH, addr String    ; меняем кодировку строки пути
    надо проверить вообще я так понимаю она должна работать вообще на любой винде не только английской но и с любым языком в путях. ну а как проверишь?
     
    Добавлено:
    я на форуме масма спрашивал и хоть там не только англоязычные посетители чета мине никто не ответил.
     
    Добавлено:
    а там многие переходят на масм с С и вообще много консольных прог пишут, но вот чета кодировку никто не меняет. хз почему

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:04 18-11-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 9
    vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru