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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    Astron



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Спасибущи огромные! Всё работает на ура!!!

    Всего записей: 790 | Зарегистр. 28-12-2003 | Отправлено: 03:44 16-03-2008
    VitAll2013

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    Пишет вот так, MUI и тут руссифицировал... Могу отключить MUI (хотя для чистоты эксперемента надо WINDOWS совсем без MUI)
     

    Цитата:
    D:\>dir "file.exe" /t:c /a:-d /s
     Том в устройстве D не имеет метки.
     Серийный номер тома: C873-6220
     
     Содержимое папки D:\Experement\
     
    09.12.2007  11:38         6 217 728 file.exe
                   1 файлов      6 217 728 байт
     
         Всего файлов:
                   1 файлов      6 217 728 байт
                   0 папок  11 050 561 536 байт свободно

     
    (Предыдущее название файла было взято для чистоты эксперемента - забыл поправить просто, чтоб было в оговоренной системе имён)
     
    Второй вариант по умолчанию пишет крокозяблы, но когда ставлю
     

    Цитата:
    rem chcp 1251 > nul

     
    то пишет по русски
     

    Цитата:
    Файл не найден
    Файл не найден
     
    Операция успешно завершена
    Режим вывода команд на экран (ECHO) отключен.
    Для продолжения нажмите любую клавишу . . .

     
    что в общем то числено - по символам, соответствует крокозяблам. Но путь, точнее переменная %way% оказывается пустой. В принцыпе по замыслу бантик запускается в хайд режиме, после его работы просто получается переменная пути которую потом использует вторая часть инсталятора, не ясно сможет ли он работать на всех версиях Windows XP... 1251 - это кодовая страница кирилицы? ... вообще строчка  

    Цитата:
    chcp 1251 > nul

    что говорит системе?
     
    ...сделаю, пришлю.

    Всего записей: 17 | Зарегистр. 12-02-2006 | Отправлено: 08:17 16-03-2008 | Исправлено: VitAll2013, 07:45 17-03-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VitAll2013
    В общем с английской винды текст пришлёшь, лучше все варианты с муи и без, батник допишу.
     
    Добавлено:
    Почему он при
    Цитата:
    dir "proe.exe"

    далее пишет
    Цитата:
    file.exe
    , непонятно. Текст скопирован верно?
     
     
     
    Добавлено:
    насчёт
    chcp 1251 > nul
    я спрашивал у Elroir, он писал, что английской винде это не помешает.
    2-й вариант подправил, попробуй.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 09:29 16-03-2008
    VitAll2013

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    C последними изменениями теряется путь, тоесть в переменной way_fo_install есть только D:\\file.exe

    Всего записей: 17 | Зарегистр. 12-02-2006 | Отправлено: 09:45 17-03-2008
    king_stiven

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

    Код:
    ещё поправил 2 вариант, только для кириллицы. Учитывай ещё
    Цитата:
    Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!  

     

    Сохраняй батник в 1251 кодировке

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 10:20 17-03-2008 | Исправлено: king_stiven, 10:21 17-03-2008
    VitAll2013

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    С пробелами разобрался сразу, а вот с 1251 кодировкой чтото не понял. Если сохранять обычным блокнотом то там выбор из ANSI, Unicode, Unicode big endian и UTF-8. Но я работаю с Notepad++ там возможностей больше и как правильно подготовить-сохранить файл не знаю. Так сохранял в ANSI постоянно.
     
    Учитывая последние изменения на 11-10 Москвы проблема с D:\\file.exe осталась. Пробую сохранить во всевозможных кодировках.

    Всего записей: 17 | Зарегистр. 12-02-2006 | Отправлено: 10:42 17-03-2008 | Исправлено: VitAll2013, 11:18 17-03-2008
    Nthnsq



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А с VBS+Vista - никто не поможет? А то тут - мертво

    Всего записей: 4875 | Зарегистр. 15-02-2006 | Отправлено: 10:45 17-03-2008
    storm2005

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Elroir
    >Запусти в консольном окне команду:
    >for %a in (*.*) do echo %~ta
     
    20.02.2008 14:54  
     
    комп на котором нужен батник - русский win2003 sp2

    Всего записей: 15 | Зарегистр. 18-02-2006 | Отправлено: 11:07 17-03-2008 | Исправлено: storm2005, 11:08 17-03-2008
    VitAll2013

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Сохранение в других кодировках ничего не дало. Переменная cd по прежнему равна D:\

    Всего записей: 17 | Зарегистр. 12-02-2006 | Отправлено: 12:43 17-03-2008
    Elroir



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

    Код:
     
    @echo off
    setlocal
    set "dirname=C:\Temp"
    pushd "%dirname%"
    for %%a in (*.*) do call :move_files "%%a" "%%~ta"
    popd
    goto :EOF
    :move_files
    set "tdir=%~2"
    set "dir_name=%tdir:~6,4%%tdir:~3,2%%tdir:~0,2%"
    md "%dir_name%" 2>nul
    move %1 "%dir_name%"
     

    Вместо "C:\Temp" впиши полный путь к своей директории.
    Батник не тестировался - в данный момент нет возможности.
     
    Добавлено:
    Черт, не обратил внимание на слова "соответствующие датам создания файлов".
    Мой код берет дату модификации файла. Если они у тебя совпадают (даты), тогда все в порядке.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:00 17-03-2008 | Исправлено: Elroir, 14:01 17-03-2008
    VitAll2013

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Проверил в cmd все chcp - нормально работает только 866 - тоесть после chcp 866 печатает по русски и правильные символы - остальные 1251, 1252, 20866, 21866 и 437 лучшем случии дают неправильно набранную кирилицу.

    Всего записей: 17 | Зарегистр. 12-02-2006 | Отправлено: 14:41 17-03-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VitAll2013
    Убери в батнике
    @echo off  
    запусти его, и проанализируй, где закавыка. У меня нормально.
    Замени строчку  
            if "%%c%%d"=="Содержимоепапки" (
    на
            if "%%c%%d"=="╤юфхЁцшьюхяряъш" (
    и сохрани батник в 866 кодировке
    chcp 1251 > nul нужно, если в путях есть кириллица

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 14:47 17-03-2008 | Исправлено: king_stiven, 14:55 17-03-2008
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    добрый день
    есть некоторые вопросы.
     
    можно ли в батнике запускать что либо через RUNAS
    нужно следующее:
    ПК залогинен из под юзера (не локал админа)
    нужно первой строкой батника установить программу из под локал админа через RUNAS
    сдедующей строкой  батника в профиле юзера сделать изменения(уже от имени самого юзера).
     
    и еще  
    RUNAS запускается так RUNAS [/user:<UserName>] program
    можно ли создать переменную которую можно подставлять вместо <UserName>
     
    чтото типа такого:
    запустил батник, у тебя вопрос: от какого имени  вы хотите поставить программу?
    вы вписываете это имя и оно помещается в значение переменной  
    Set UserName=........
     
    далее строка батника
    RUNAS /user:%UserName% msjavx86.exe /c:"javatrig.exe /exe_install /l /q" /q:a /r:n как пример
    после будет предложение вбить пароль того локал админа..
    вы вбиваете его..
    он ставит прогу из под локал админа.
    а далее строка батника уже из под юзера
    xcopy %~dp0user_settings.xml "%APPDATA%\....\" /Y
     
    спасибо

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 16:22 17-03-2008 | Исправлено: JohnRD, 16:58 17-03-2008
    VitAll2013

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Анализ - чуть не свихнулся... =)
     
    Поменял "Содержимоепапки" на "Directoryof" - вроде заработало, буду тестить. Както чудом получилось
     
    Как сохранить в 866 так и не понял
     
    По логике в данном месте, где "Содержимоепапки", что должно происходить? Какое сравнение ведётся?
     
    Финально получилось так:

    Цитата:
    @echo off
    chcp 1251 > nul
    set file=file.exe
    for %%b in (c d) do (
        cd /d %%b:\
        for /f "usebackq tokens=1,2* delims= " %%c in (`dir "%file%" /t:c /a:-d /s`) do (
            if "%%c%%d"=="Directoryof" (
                cd /d "%%e"
            ) else (
                for /f "tokens=1,2,3,4,5,6* delims=.,:, " %%f in ("%%c %%d %%e") do if "%%l"=="%file%" (
                    call :qwe %%h%%g%%f 1%%i%%j
                )
            )
        )
    )
    set end=yes
    call :qwe
    echo %way_fo_install%
    rem pause
    goto :eof
    :qwe
    if "%1" GTR "%t1%" (
        set "way_fo_install=%cd%\%file%"
        set t1=%1
        set t2=%2
    ) else if "%1"=="%t1%" (
        if "%2" GTR "%t2%" (
        set "way_fo_install=%cd%\%file%"
            set t1=%1
            set t2=%2
        )
    )
    if defined end echo Y | reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment" /v way_for_install /t reg_sz /d "%way_fo_install:~0,-12%

     
    По какой-то неведомой мне причине, если ставить в самом конце " /f то он заносит их в значение пременной, а вот так вот - обрубдено пашет (правда не встречал ещё папок с пробелами - может там запоёт)
     
    При повторном запуске вопрошает - заменить или нет - применил фокус с echo Y |. Потестю пока...

    Всего записей: 17 | Зарегистр. 12-02-2006 | Отправлено: 16:42 17-03-2008 | Исправлено: VitAll2013, 16:57 17-03-2008
    01MDM



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

    Цитата:
    можно ли в батнике запускать что либо через RUNAS

     
    нет нельзя, runas примет пароль только если он введен с клавиатуры.  
     
    sorry/ Если вводить вручную то можно.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:50 17-03-2008 | Исправлено: 01MDM, 17:01 17-03-2008
    Nthnsq



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

    Цитата:
    Как сохранить в 866 так и не понял

     

    Всего записей: 4875 | Зарегистр. 15-02-2006 | Отправлено: 16:51 17-03-2008
    VitAll2013

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    АкельПад... - буду знать.

    Всего записей: 17 | Зарегистр. 12-02-2006 | Отправлено: 16:59 17-03-2008
    sdaww

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

    Всего записей: 89 | Зарегистр. 17-01-2007 | Отправлено: 17:39 17-03-2008
    Nthnsq



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

    Цитата:
    АкельПад... - буду знать.

    Он в Сэмовской сборке Тотала установлен.

    Всего записей: 4875 | Зарегистр. 15-02-2006 | Отправлено: 17:47 17-03-2008
    storm2005

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Elroir
     
    Большое спасибо, все работает.

    Всего записей: 15 | Зарегистр. 18-02-2006 | Отправлено: 18:19 17-03-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 100 101 102 103

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru