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

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

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

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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
     
    не помогла утилитка,  
    в переменных средах появилась переменная (но появилась она из за reg add),  
    set не показывает ее, даже если завести через  
    set SAPLOGON_INI_FILE=%USERPROFILE%\SapWorkDir\SapLogon.ini
    все равно программа не увидит ее до перелогина.
     
    комманда:
    SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
        (LPARAM) "Environment", SMTO_ABORTIFHUNG,
        5000, &dwReturnValue);
     
    взятая от сюда http://support.microsoft.com/?scid=kb%3Ben-us%3B104011&x=3&y=8
    тоже не помогает
    в чем интересно дело?
     
    еще вопрос: можно ли схватить переменную %username% под которым залогинился человек который сидит за компом, чтобы использовать для внесения той самой переменной
    reg add HKCU\Environment /v SAPLOGON_INI_FILE /t REG_EXPAND_SZ /d %%USERPROFILE%%\SapWorkDir\SapLogon.ini /f  
    в реестр именно в его HKCU\Environment
     
    используя psexec удаленно, поскольку psexec использует свой %username%
    тоесть как-будто человек сам выполнил эту команду от своего имени..
     
    ??
     
     
     

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 15:32 15-07-2009 | Исправлено: JohnRD, 16:30 15-07-2009
    01MDM



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

    Код:
     
    nircmdc sysrefresh environment
     

     
    И наверное надо перезапустить cmd.

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть файл-список директорий под названием dirlist
    Нужно
    1. скопировать из dirlist все файлы с расширением *.png;*.gif;*.jpg в папку img\
    2. используя dirlist найти все файлы с именем style.css и склеить в один под названием result.css

    Всего записей: 7 | Зарегистр. 10-07-2009 | Отправлено: 18:32 15-07-2009
    01MDM



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

    Код:
     
    @echo off
    setlocal
     
    cd.>result.css
    for /f "tokens=*" %%i in (dirlist) do (
        pushd "%%i"
        call:1
        call:2
        popd
    )
    goto:eof
     
    :1
    for %%i in (*.png *.gif *.jpg) do copy "%%i" "C:\img"
    goto:eof
     
    :2
    2>nul copy "%~dp0result.css"+style.css "%~dp0result.css"
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:05 15-07-2009
    yuri7322

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




    спасибы — в ПМ!

    Всего записей: 7 | Зарегистр. 10-07-2009 | Отправлено: 20:59 15-07-2009 | Исправлено: vu1tur, 09:45 16-07-2009
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
     
    спасибо, но не работает почему то.
    1.cmd
    reg add HKEY_CURRENT_USER\Environment /v SAPLOGON_INI_FILE /t REG_EXPAND_SZ /d %%USERPROFILE%%\SapWorkDir\SapLogon.ini /f
    nircmdc.exe sysrefresh environment
     
    ни в SET нету и программа не видит эту USER переменную, если перелогиниться то все сразу хорошо.  
     
    что Вы имели ввиду
    Цитата:
    И наверное надо перезапустить cmd.

     
    может проблема заключается не в том что система не видит эту переменную а в другом чем то?

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 09:37 16-07-2009 | Исправлено: JohnRD, 10:57 16-07-2009
    01MDM



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

    Цитата:
     
    nircmdc.exe sysrefresh environment
     

     
    У меня работает... Добавляю значение в реестр, запускаю команду, перезапускаю cmd, ввожу set и переменная отображается в списке всех переменных. Попробуй %userprofile% без экранирования. Что-то мне подсказывает проблема где-то здесь.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:49 16-07-2009
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
     
    не, там все правильно, если не экранировать он в чистую имя впишет.
     
    это я протупил... , CMD то из папки system32 пускается, а там нет nircmdc.exe  
    я сделал в сети 1.cmd и вписал туда

    Код:
    reg add HKEY_CURRENT_USER\Environment /v SAPLOGON_INI_FILE /t REG_EXPAND_SZ /d %%USERPROFILE%%\SapWorkDir\SapLogon.ini /f  
    nircmdc.exe sysrefresh environment
     
     
    nircmdc.exe положил рядом
    если вписать до nircmdс полный путь все работает..
     
    кстати как можно сделать чтобы не вписывать до комманды ничего?
     
    поскольку, если запускать из фара из примапленной папки через net use, то все работает
    а если через Пуск \\serever\shara\1.cmd то тут как раз нет путей для утилит из батника.
     
    может %~dp0

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 13:36 16-07-2009 | Исправлено: JohnRD, 13:51 16-07-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JohnRD
    Извини, жара, все плавится, если прравильно понял вопрос, то я просто для сторонних утилит создал отдельную директорию %USERPROFILE%\BIN, прописал ее в HKCU\Environment в переменную %PATH%. Создал жесткие ссылки или батники для запуска нужных приложений. Все прекрасно работает.
     
    Кстати совет, не тестируй батники из фара. При всех преимуществах, он подчас неправильно решает задачи. Проверить легко. Введи в ком.строке фара(Ctrl-O) команду echo %random% и повтори ее несколько раз. Неадекватная работа "налицо".

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:44 16-07-2009
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
     
    спасибо, а про фар даже не знал - действительно "налицо" причем часто повторяет.
     
    с nircmd все получилось,
     
    случаем не  подскажешь, какие варианты есть для внесения в реестр, в ветку пользователя реально залогиненого и работающего, с  помощью PSEXEC от другого имени ? не считая подойти самому.

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 20:29 16-07-2009 | Исправлено: JohnRD, 20:31 16-07-2009
    01MDM



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

    Цитата:
    случаем не  подскажешь,

    Не админ. Батник == Кроссворд
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:35 16-07-2009
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые форумчане!
    Помогите, пожалуйста, решить такой вопрос:
    Батник запускается в скрытом режиме, на рабочем столе находится его ярлык. Как, при запуске батника проверить, запущен ли он уже, и если запущен, то не запускать его второй раз.
    Спасибо.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 03:44 17-07-2009 | Исправлено: madmasles, 03:46 17-07-2009
    JohnRD

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

    Цитата:
    Не админ. Батник == Кроссворд  
     не понял, совсем непонял

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 07:49 17-07-2009
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    вопрос уже поднимался http://forum.ru-board.com/topic.cgi?forum=62&topic=15343&start=1600#21 ответ на следующей странице

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 13:22 17-07-2009
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    smirnvlad
    Спасибо, буду пробовать.
     
    PS Извините, что задаю вопрос, на который ответ уже был дан ранее. Прежде чем задать вопрос, я 4 часа искал ответ на форуме, но не нашел

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 14:51 17-07-2009
    ZolotnikOV



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите написать батник. начал читать и понял что сам не смогу.
    условия таковы:
    есть перечень файлов в папке E:\yyy
    aaa***.xxx
    bbb***.xxx
    ccc***.xxx
    ddd***.xxx
    нужно их из этой папки переместить и рассортировать
    по папкам:
    E:\yyy\aaa\
    E:\yyy\bbb\
    E:\yyy\ccc\
    E:\yyy\ddd\
     
    (названия  начала файлов соответствуют названиям папок)
     
    большое спасибо за помощь.

    Всего записей: 393 | Зарегистр. 26-11-2007 | Отправлено: 18:44 17-07-2009
    king_stiven

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

    Код:
    @echo off
    cd /d E:\yyy
    md aaa
    md bbb
    md ccc
    md ddd
    for %%e in (*) do (
        set ty=%%e
        call :hj
    )
    goto :eof
    :hj
    if "%ty:~0,3%"=="aaa" move "%ty%" aaa
    if "%ty:~0,3%"=="bbb" move "%ty%" bbb
    if "%ty:~0,3%"=="ccc" move "%ty%" ccc
    if "%ty:~0,3%"=="ddd" move "%ty%" ddd

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:49 17-07-2009 | Исправлено: king_stiven, 20:59 17-07-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2 вариант
     
    cd /d E:\yyy
    for %%e in (aaa bbb ccc ddd) do (
        md %%e
        for %%f in (%%e*) do move "%%f" %%e
    )

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



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет. кто знает можно ли реализовать в bat такую идею: в каталоге С:\DAS\ находятся папки с именем типа 09_07_01, 09_07_02, 09_07_03 и т.д. тоесть папки имееют название даты создания 09_07_01 - 01 июля 2009г. надо скопировать с папки имеющей название текущей даты файл с именем   начинающимся на @55 в каталог С:\LLL\ и переименовать в 1.txt а также с папки с названием предыдущей даты(на один рабочий день меньше - папок с датой субб. и воскресенья нет) в каталог С:\LLL\ и переименовать в 2.txt.   Пример: сегодня 20.07.2009 надо с копировать с папки 09_07_20 в папку С:\LLL\ и переименовать в 1.txt и с папки 09_07_17 в каталог С:\LLL\ и переименовать в 2.txt . Помогите сам не разберусь.

    Всего записей: 251 | Зарегистр. 10-05-2009 | Отправлено: 13:21 19-07-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Seryoga204
    А если запустил 1 07 09, то первая папка будет за этот день, а вторая за 30 06 09 уже не годится? echo %date% что показывает?
     
    Добавлено:
    Seryoga204
    @echo off  
    cd /d С:\DAS
    for /f "tokens=*" %%c in ('dir /t:c /b /a:d /o:-d') do (
        if not defined fgh echo %%c
        if defined fgh (
            echo %%c
            pause
            goto :eof
        )
        set fgh=1
    )
    этот батник выводит на экран две папки по созданию от молодых к старым, вместо
    echo %%c
    сам можешь раписать нужные действия
     
    if not defined fgh echo %%c-здесь показывает первую папку
    if defined fgh (
            echo %%c-здесь вторую
     
    не получится спросишь
       

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 14:34 19-07-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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru