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

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

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

KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

hErAx

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

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

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

  • Отправлено: 01:53 25-10-2015 | Исправлено: Paromshick, 21:51 18-12-2017
    Pasha_ZZZ



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    andron_g1975
    Цитата:
    или вывод ею же из файла
    clip из файлов не выводит, а копирует.
    Пустая строка при копировании из файла добавляется только если она в этом файле есть.
    Цитата:
    clip <testfile.txt
    копирует без пустой строки.
    С echo пустая строка появляется, потому что ее добавляет сама команда echo.
    Вывод без пустой строки можно осуществить через set /p
    Цитата:
    echo|set /p="Hello World"|clip

    Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 05:14 11-04-2017
    andron_g1975



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pasha_ZZZ
    Огромное вам спасибо, то что нужно. Но почему нигде(даже на cyberforum) нет такого простого решения? Рекомендуют разную заумную хрень которая в итоге не дает результата.

    Всего записей: 380 | Зарегистр. 09-11-2008 | Отправлено: 17:45 11-04-2017
    Start



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста.
    Как в файле Magnifier.reg при помощи bat-файла поменять путь, на путь нахождения самого bat-файла? bat-файл будет рядом с программой Magnifier.exe и файлом Magnifier.reg
     
    Magnifier.reg

    Код:
    Windows Registry Editor Version 5.00
     
    [HKEY_LOCAL_MACHINE\SOFTWARE\Iconico\Magnifier]
    "InstalPath"="C:\\Program Files\\Iconico\\Magnifier\\Magnifier.exe"
    "Version"="2.4"
     

     
    Программа Screen Calipers запускает из своего меню программу Magnifier.exe только тогда, когда путь в реестре правильный. И всё это будет находится на флешке и путь иногда меняется.

    Всего записей: 634 | Зарегистр. 28-01-2006 | Отправлено: 23:44 11-04-2017 | Исправлено: Start, 23:47 11-04-2017
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Start
    Какая нить конструкция типа:

    Код:

    @ECHO OFF
    SET "CurrentPath=%CD%"
    SET "CurrentPath=%CurrentPath:\=\\%"
    (
    ECHO REGEDIT4
    ECHO.
    ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\Iconico\Magnifier]
    ECHO "InstalPath"="%CurrentPath%\\Magnifier.exe"
    ECHO "Version"="2.4"
    ECHO.
    )>Magnifier.reg
     

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 00:34 12-04-2017 | Исправлено: igor_andreev, 00:41 12-04-2017
    Start



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Спасибо. Работает отлично.  
    Получается, что батник переписывает весь текст в файле Magnifier.reg

    Всего записей: 634 | Зарегистр. 28-01-2006 | Отправлено: 03:38 12-04-2017
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Start
    Ну да. А чего изгаляться то созданием временного файла, чтением его построчно, заменой строк...? Легче сразу новый файл создать c нужными данными.
     

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 03:49 12-04-2017
    Start



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Скажите, для Win98 такой же батник можно сделать?

    Всего записей: 634 | Зарегистр. 28-01-2006 | Отправлено: 04:36 12-04-2017
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Start
    Можно. Не знаю как, но точно можно
    Для 98 батники никогда не писал и в тамошнем синтаксисе ни бум-бум, но по инету всякие примеры  определения текущей директории точно видел.  
    Вот такой батник определяет текущую папку в 98?:

    Код:

    @echo off
    echo exit|%comspec% /k prompt set CurDir=$P$_| FIND " " > %temp%\SetCD.bat
    call %temp%\SetCD.bat
    echo Current Directory %CurDir%

    Мне проверять не на чем. Если определяет, то тут же на рубоарде есть всякие примеры замены в тексте с использованием sbs2.com и похожими, они на 98-й работают.
     

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 06:06 12-04-2017
    Start



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нашел как создать и как использовать sbs2.com, только не разберусь никак.
     
    Добавлено:
    sbs2.com создал - контрольная сумма как и у скаченного. Не пойму как его применить.
     
    Добавлено:
    В рабочий батник первой строкой добавил:

    Код:
    chcp 1251
    @ECHO OFF
    SET "CurrentPath=%CD%"
    SET "CurrentPath=%CurrentPath:\=\\%"
    (
    ECHO REGEDIT4
    ECHO.
    ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\Iconico\Magnifier]
    ECHO "InstalPath"="%CurrentPath%\\Magnifier.exe"
    ECHO "Version"="2.4"
    ECHO.
    )>Magnifier.reg
    а то с кириллицей в путях не работал.

    Всего записей: 634 | Зарегистр. 28-01-2006 | Отправлено: 06:42 12-04-2017 | Исправлено: Start, 07:29 12-04-2017
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Start
    А зачем вообще .reg файл?

    Код:
    Reg.exe add "HKLM\SOFTWARE\Iconico\Magnifier" /v "InstalPath" /t REG_SZ /d "%cd%\Magnifier.exe" /f
    Reg.exe add "HKLM\SOFTWARE\Iconico\Magnifier" /v "Version" /t REG_SZ /d "2.4" /f

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 07:24 12-04-2017
    Start



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Спасибо. Ваш код работает хорошо и без команды chcp 1251, только в Win98 не работает.

    Цитата:
    А зачем вообще .reg файл?

    Просто мне так привычнее.

    Всего записей: 634 | Зарегистр. 28-01-2006 | Отправлено: 07:44 12-04-2017 | Исправлено: Start, 08:25 12-04-2017
    Start



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

    Код:
    @echo off
    echo exit|%comspec% /k prompt set CurDir=$P$_| FIND " " > %temp%\SetCD.bat
    call %temp%\SetCD.bat
    echo Current Directory %CurDir%
    ECHO REGEDIT4>Magnifier.reg
    ECHO.>>Magnifier.reg
    ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\Iconico\Magnifier]>>Magnifier.reg
    ECHO "InstalPath"="%CurDir%\\Magnifier\\Magnifier.exe">>Magnifier.reg
    ECHO "Version"="2.4">>Magnifier.reg
    ECHO.>>Magnifier.reg

    А файл Magnifier.reg получается с неправильным путём:

    Код:
    REGEDIT4
     
    [HKEY_LOCAL_MACHINE\SOFTWARE\Iconico\Magnifier]
    "InstalPath"="C:\733\Screen Calipers 4.0\\Magnifier\\Magnifier.exe"
    "Version"="2.4"
     
     

    Всего записей: 634 | Зарегистр. 28-01-2006 | Отправлено: 11:56 12-04-2017 | Исправлено: Start, 11:56 12-04-2017
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Start
    Для этого sbs2 в 98-й и нужен,  заменить одинарный бэкслеш на двойной.
    Вот так наверно тогда в итоге должно работать:

    Код:

    @echo off
     
    echo exit|%comspec% /k prompt set CurDir=$P$_| FIND " " > %temp%\SetCD.tmp
    sbs2.com 0 "\" "\\" <%temp%\SetCD.tmp>%temp%\SetCD.bat  
    call %temp%\SetCD.bat
     
    ECHO REGEDIT4>Magnifier.reg  
    ECHO.>>Magnifier.reg  
    ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\Iconico\Magnifier]>>Magnifier.reg  
    ECHO "InstalPath"="%CurDir%\\Magnifier\\Magnifier.exe">>Magnifier.reg  
    ECHO "Version"="2.4">>Magnifier.reg  
    ECHO.>>Magnifier.reg
     
    del /q %temp%\SetCD.*
     


    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 13:13 12-04-2017 | Исправлено: igor_andreev, 13:16 12-04-2017
    Start



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Теперь в Win98 работает, а в WinXP не работает.

    Всего записей: 634 | Зарегистр. 28-01-2006 | Отправлено: 13:29 12-04-2017
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Start
    Судя по твоим же постам, у тебя в 98-й Magnifier.exe находится в подпапке Magnifier, а в XP нет?
     
    "%CurDir%\\Magnifier\\Magnifier.exe" в 98
    "%CurrentPath%\\Magnifier.exe" в XP

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 14:25 12-04-2017 | Исправлено: igor_andreev, 14:26 12-04-2017
    Start



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    У меня в заголовке был код: chcp 1251 он и мешался.  
    Поставил его в средину, теперь работает:

    Код:
    @echo off
     
    echo exit|%comspec% /k prompt set CurDir=$P$_| FIND " " > %temp%\SetCD.tmp
    sbs2.com 0 "\" "\\" <%temp%\SetCD.tmp>%temp%\SetCD.bat
    call %temp%\SetCD.bat
     
    chcp 1251
     
    ECHO REGEDIT4>Magnifier.reg
    ECHO.>>Magnifier.reg
    ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\Iconico\Magnifier]>>Magnifier.reg
    ECHO "InstalPath"="%CurDir%\\Magnifier\\Magnifier.exe">>Magnifier.reg
    ECHO "Version"="2.4">>Magnifier.reg
    ECHO.>>Magnifier.reg
     
    del %temp%\SetCD.*
     
    start /wait REGEDIT /s Magnifier.reg
    @cls

    Всего записей: 634 | Зарегистр. 28-01-2006 | Отправлено: 15:31 12-04-2017 | Исправлено: Start, 20:46 12-04-2017
    YuS_2



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

    Цитата:
    А зачем вообще .reg файл?

    А в таком варианте (batch-сценарий), система потребует админ права...а там переменная %cd% примет совсем не то значение, которое ожидается, увы.

    Код:
    %~dp0

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 15:49 12-04-2017 | Исправлено: YuS_2, 15:51 12-04-2017
    metatrop

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

    Цитата:
     
    Скажите, для Win98 такой же батник можно сделать?
     

     
    В Win98 как будто бы можно вместо command.com использовать cmd.exe (от Windows 2000 SP4, модифицированный).
     
    Жаль, Win98 давно никак не использую, проверялось только в виртуальной машине. На первый взгляд всё работает. Вот бы знать о такой возможности в начале 2000-х, многое было бы гораздо интереснее...

    Всего записей: 313 | Зарегистр. 17-09-2010 | Отправлено: 19:21 12-04-2017
    Smitis



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

    Цитата:
    В Win98 как будто бы можно вместо command.com использовать cmd.exe (от Windows 2000 SP4, модифицированный).  

    В Win98 ещё замечательно работает 4nt.exe, да и 4dos имеет неплохие возможности.


    ----------
    Разум когда-нибудь победит

    Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 10:05 13-04-2017
    metatrop

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

    Цитата:
     
    В Win98 ещё замечательно работает 4nt.exe, да и 4dos имеет неплохие возможности.
     

     
    Возможности неплохие, а вот совместимость с cmd.exe - к сожалению, слабая (неоднократно такие отзывы встречались). Ведь надо, чтобы скрипты всюду универсально работали.
     
    Довольно сложные вызовы cmd могут идти, например, из меню FAR, которое должно работать одинаково во всех системах (версии меню под разные интерпретаторы делать/проверять - нереально).
     
    У меня оказалось, что под Win98 стало наполовину неработоспособным нынешнее меню FAR, использующее вызовы cmd и ряда сложных внешних cmd скриптов (сравнение спектрограмм аудио-файлов, операции с git/hg репозиторием и др.). Лишь установка cmd.exe позволяла снять несовместимость полноценно, что и было опробовано.

    Всего записей: 313 | Зарегистр. 17-09-2010 | Отправлено: 17:30 15-04-2017
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 12
    KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru