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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    1nasty1



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    bomzzz
    Если бы я мог сделать, я бы здесь не спрашивал. Не хватает мне чего-то. Не знаю правда, чего больше - опыта, или знаний? Надеялся, что здесь все-таки есть специалисты, способные решать любые вопросы в .bat, включая и мой с минимальными временными затратами. Я же состарюсь за этой задачей ). Но я успел оценить Ваш юмор, а также креативность и способность быстро решать все поставленные задачи. Правда, пока до командной строки дело не дошло, но и на том спасибо.
    All
    еще раз напомню про условия:
    1) по сети надо запускать vmware машину, на которой уже автоматом стартует vnc сервер на 5900 порту. VNC-сервер можно включить прямо в меню Vmware, там же предварительно настроен порт. Напр. запускаем машину на сервере 192.168.1.10.
    2) секунд через 5-10 стартует uVNC с автоконнектом на 192.168.1.10:5900
    3) Закрываем окно uVNC, - вместе с ним закрывается Vmware машина.

    Всего записей: 751 | Зарегистр. 11-03-2005 | Отправлено: 04:18 11-09-2010 | Исправлено: 1nasty1, 04:20 11-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    1nasty1
    но это тема то про батники, а не конкурс на знание командной строки отдельных программ, разве SED только тут прописался.
     
    <имя программы> <параметры коммандной строки>
     
    вот это все что касается батников в твоем вопросе
     
    Добавлено:
    http://www.uvnc.com/install/cmdline.html  - вот тута все написькано. если по какой то конкретной команде вопрос ну спроси может и ответит кто даже если программой не пользовался никогда
     
    Добавлено:

    Цитата:
     
    -autoreconnect
        Is used in conjunction with the -connect switch when having a server "back-connect" to a listening viewer. You can use it in a batch file for your clients that are behind a firewall that is not under your control. The batch file looks something like this:
        "c:\program files\ultravnc\winvnc" -autoreconnect -connect 12.34.56.78
        On the local computer run the viewer in "listening" mode, and have someone on the server end run the batch file. The -autoreconnect will make the server end attempt to reconnect to the listening viewer if the connection drops or is closed. It will immediately reconnect to the listening viewer if the session is closed. Close the listening viewer altogether in order to stop the server end from "autoreconnecting" to your computer. The server attempts to "autoreconnect" for only a few seconds.
        Note that this "autoreconnect" param must be before the "connect" one on the command line!
    -kill
        Kills any already running copy of WinVNC.
     

     
    Добавлено:
    это по поводу коннекта, а по поводу вьювера, тружно что то определенное понять если программой не пользовался. она у меня не заработала, может делал чета не так, особо не заморачивался, ами админ и тим вьювер гораздо проще
     
    Добавлено:
    http://www.pcgood.ru/soft/realvnc/

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 04:25 11-09-2010
    LunQ



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Программисты, помогите автоматизировать задачу.
    Можно как-то строку начинающуюся с User в файле Temp.txt дописать к тексту в файле Result.txt, или, на худой конец, текст файла Temp.txt добавить к тексту файла Result.txt?

    Всего записей: 30 | Зарегистр. 12-10-2008 | Отправлено: 13:44 12-09-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LunQ
    Тебе что, в начало текстового файла нужно впихнуть некоторую сточку? Если да, то в батниках такое трудно провернуть, но вот тебе
    vbs'ка, которая должна помочь, если требуется сделать именно это. Если нет, то поясни что к чему.

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 13:59 12-09-2010 | Исправлено: ComradG, 14:01 12-09-2010
    LunQ



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    Мне нужно в конец или начало текста файла впихнуть строку из другого файла, содержание которой изменчиво, но начинается она со слова User.
    Как дописать конкретную строку понятно: echo текст >> Result.txt

    Всего записей: 30 | Зарегистр. 12-10-2008 | Отправлено: 14:14 12-09-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LunQ
    А эта "изменчивая" строка сама где находится: в начале, в середине или в конце? Или файл, из которого нужно эту самую строку вставить только и состоит что из этой "изменчивой" строки?

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 14:18 12-09-2010
    LunQ



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    Там много строк, нужное предложение (со словом User) находится в середине текста (начинается с красной строки и заканчивается).
    Пока разобрался как весь текст дописать в другой файл:
    for /f "tokens=*" %%i in (Temp.txt) do echo %%i >> Result.txt

    Всего записей: 30 | Зарегистр. 12-10-2008 | Отправлено: 14:25 12-09-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LunQ
    Длинно пишешь (я про фор с последующим перенаправлением), но это не по теме. Если же быть по теме, то для нахождения нужных строк имеется два варианта: если слово User встречается только в нужных тебе строках, то тебе нужно проделать что-то вроде findstr /x User >> Result.txt; если не только в нужных строках, поколдуй с findstr /n (или что-то типа того).

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 14:38 12-09-2010 | Исправлено: ComradG, 14:39 12-09-2010
    NIKZZZZ



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

    Код:
    for /f "tokens=1,*" %%i in (Temp.txt) do if "%%i"=="User" echo %%i %%j >> Result.txt

    Предполагается, что после User идет пробел, иначе надо указsвать параметр "delims="

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 14:40 12-09-2010 | Исправлено: NIKZZZZ, 14:42 12-09-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Тоже вариант, но бага в том, что если даже указать delims= , а пробел не во всех сроках после User, то часть из того будет потеряна. Да, кстати, ты не знаешь как без помощи vbs в начало файла строки писать? А то я только и умею оное делать через vbs.

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 14:51 12-09-2010
    LunQ



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Пробел есть, только почему-то не передается вообще ничего
    Хотя, соврал, передается, только если вместо User русское слово вписать, то не передается.

    Всего записей: 30 | Зарегистр. 12-10-2008 | Отправлено: 14:58 12-09-2010 | Исправлено: LunQ, 15:06 12-09-2010
    NIKZZZZ



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

    Цитата:
    Тоже вариант, но бага в том, что если даже указать delims= , а пробел не во всех сроках после User, то часть из того будет потеряна. Да, кстати, ты не знаешь как без помощи vbs в начало файла строки писать? А то я только и умею оное делать через vbs.

    Можно указать несколько разделителей, если User не является отдельным словом (например UserProfile), его несложно обрезать до четырех первых символов.
     
    Для записи в начало можно создать временный файл, после чего склеить его командой "Copy" c модифицируемым.  
     
     
    Добавлено:
    LunQ

    Цитата:
    Пробел есть, только почему-то не передается вообще ничего

    Возможно, там не пробел а, например TAB, возможно, там служебные символы.
     
    Приведи кусочек Temp.txt
     
     
     
     
    Добавлено:
    LunQ

    Цитата:
    только если вместо User русское слово вписать, то не передается.

    Напиши батник в той кодировке, которая используется в Temp.txt

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 15:05 12-09-2010
    LunQ



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

    Цитата:
    Напиши батник в той кодировке, которая используется в Temp.txt  

    Заработало!
    Спасибище!!!
     
    ComradG То же Сенкс!

    Всего записей: 30 | Зарегистр. 12-10-2008 | Отправлено: 15:22 12-09-2010 | Исправлено: LunQ, 15:25 12-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    странно работает и так и так, но как правельно???

    Цитата:
     
    .........
    for /F "delims=" %%I in ('dir /A:-D /B') do (
    if NOT %%~xI==.txt (
    ........
     


    Цитата:
     
    .........
    for /F "delims=" %%I in ('dir /A:-D /B') do (
    if NOT %%~xI%==.txt (
    ........
     

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:50 12-09-2010 | Исправлено: bomzzz, 15:51 12-09-2010
    Rush

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

    Цитата:
    странно работает и так и так, но как правельно???  

    Ну задний-то знак процента здесь уже не относится к переменной. Он интерпретируется как знак вывода новой переменной и съедается.

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 16:57 12-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    то есть надо понимать правельна так - %%~xI ???
    в описании команды фор чета мутно на этот счет, а с случаем когда и так и так работает первый раз столкнулся, обычно все на свете прокленешь пока эти проценты расставишь

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:02 12-09-2010
    king_stiven

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

    Цитата:
    %%~xI  

    да

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 17:52 12-09-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:54 12-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    внутри тела цикла FOR оказывается нельзя метки использовать, а как организовать счетчик тогда?  
    http://downloadmaster.ru/forum/viewtopic.php?f=2&t=12727
     

    Цитата:
    Как заставить DM автоматически создавать папку для закачки по имени скачиваемого файла, так как варианты: рacпoзнaвaть пo кaтeгopиям, сoздaвaть пoдпaпки пo дaтe, сoздaвaть пoдпaпки нa ocнoвe URL, сoздaвaть пoдпaпки нa ocнoвe имeни cepвepa, совсем неудобны, потом всё равно приходится создавать папки ручками и распихивать самому.

     

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

     

    Цитата:

    @ECHO OFF
    COLOR 9F
    CLS
    CHCP 1251
    CD /D "C:\TEMP"
    SET MYTIME=%DATE%-%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%

    for /F "delims=" %%I in ('dir /A:-D /B') do (
       if "%%~xI"=="" (
           MD "%%I-%MYTIME%"
            MOVE "%%I" "%%I-%MYTIME%"
            if exist "%%I.txt" MOVE "%%I.txt" "%%I-%MYTIME%"
            REN "%%I-%MYTIME%" "%%I"

       ) else (
           if NOT %%~xI==.txt (
               if exist "%%~nI" (
                   MD "%%~nI-%%~xI"
                    MOVE "%%I" "%%~nI-%%~xI"
                    if exist "%%I.txt" MOVE "%%I.txt" "%%~nI-%%~xI"

               ) else (
                   MD "%%~nI"
                    MOVE "%%I" "%%~nI"
                    if exist "%%I.txt" MOVE "%%I.txt" "%%~nI"

               )
           )
       )
    )
     
    for /F "delims=" %%I in ('dir /A:-D /B') do (

       if exist "%%~nI" (
           MD "%%~nI-%%~xI"
            MOVE "%%I" "%%~nI-%%~xI"
            if exist "%%I.txt" MOVE "%%I.txt" "%%~nI-%%~xI"

       ) else (
           MD "%%~nI"
            MOVE "%%I" "%%~nI"
            if exist "%%I.txt" MOVE "%%I.txt" "%%~nI"

       )
    )
    PAUSE

    Добавлено:
    кто дм уважает, напишите батник для дм-а. тут условия задачи менялись по ходу, поэтому был выбран возможно не самый оптимальный алгоритм изначально.  
     
    Добавлено:

    задача:
    в одной папке лежат абсолютно случайные файлы,  как то: файлы с расширениями, без расширений и возможно имеющие одинаковые имена, но имеющие разные расширения (или не имеющие). к некоторым файлам созданы файлы описаний, имя которых: <имя файла с раширением.txt>, в то же время текстовые файлы, находящиеся в папке, могут и не являться файлами описаний. надо распихать все файлы по папкам с названием - <имя файла без расширения>, файлы описаний должны попасть в папки своих файлов. ну и понятное дело во всем этом могут быть русские буквы. так как файлы абсолютно случайные, какие то ситуации могут в этой схеме быть и не упомянуты

     
    прим согласно неписанным правилам виндовс имя файла не может заканчиваться точкой(точками) и начинаться пробелом (пробелами), эти знаки автоматически откидываются
     

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 01:35 13-09-2010 | Исправлено: bomzzz, 14:53 13-09-2010
    01MDM



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

    Цитата:
    согласно неписанным правилам виндовс имя файла не может заканчиваться точкой(точками) и начинаться пробелом

    На счет пробела ты ошибаешься
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:02 13-09-2010 | Исправлено: 01MDM, 08:03 13-09-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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru