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

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

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
часть 1 | часть 2 | часть 3 | часть 4 | часть 5
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ more ].  

Смежные темы:
В помощь системному администратору > Автоматизация администрирования
Microsoft Windows > Сценарии Windows

Полезные ссылки:
· Из Windows XP Professional Product Documentation:
> Описание Cmd.exe > Command shell overview
> Using batch files > Using batch parameters > Using filters > Using command redirection operators
 
· Уроки bat-аники (для начинающих): первый и второй
· Курс из 19 лекций "Командная строка и сценарии Windows"
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Выполнение BAT-скриптов без вызова окна консоли
· cmdow - изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· blat - отправка почты из консоли
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)
 
· Архив всевозможных версий cmd.exe (от Windows NT 3.51 до Windows 10) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 4.0, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на текущей версии ОС. Ссылки wdho.ru tinyupload.com dbree.org
 
· Сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 37441 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: Maz, 07:16 24-04-2021
lexapass



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
grey109
Мое мнение - остановиться на использовании sendserial и подобных, как умеющих обрабатывать спецсимволы.
Полагаю, что причина неработоспособности bat-файла с echo скорее всего в том, что невозможно передать завершающую комбинацию Ctrl+Z (ascii 26 / hex 0x1a), которая отображается как ^Z. Модем примет их как два обычных символа и будет продолжать ждать завершения.
Попробуйте в консоли перенаправить ввод с клавиатуры на модем (copy con com4) и после ввода всех команд AT (без echo и перенаправления) сначала ввести "^Z", а во втором случае нажать Ctrl+Z.

Всего записей: 550 | Зарегистр. 11-10-2004 | Отправлено: 10:56 18-05-2021
Wu Tang



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wadimuss
понял
kraeved
имя ярлыка только в одном месте прописывается?

----------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!

Всего записей: 3313 | Зарегистр. 15-10-2007 | Отправлено: 12:57 18-05-2021
Baltazar500



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

Всего записей: 1736 | Зарегистр. 19-09-2011 | Отправлено: 13:54 18-05-2021
grey109



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Не, не работает. Как советует lexapass остановлюсь на сторонней утилите.  
 
Спасибо всем за помощь!
 
Добавлено:
Ура!!! Получилось. lexapass натолкнул меня на мысль про спецсимволы. Погуглил немного и нашел решение:
 
echo AT+CSCS="GSM" > \\.\COM9
echo AT+CMGF=1 > \\.\COM9
echo AT+CMGS="+71234567890" > \\.\COM9
echo test > \\.\COM9
copy z.txt \\.\COM9 /b
 
Ключевая строка copy z.txt \\.\COM9 /b. В этом файле символ с кодом 0x1A или в десятичной значении 26.
 
Еще раз всем спасибо!
 
Добавлено:
Понял почему модем зависал и его теряла программа - батник занимал порт, программа не могла до порта достучаться, а батник ждал завершающего символа 0х1А, чтобы отправить смс.

Всего записей: 130 | Зарегистр. 13-11-2003 | Отправлено: 15:23 18-05-2021
kraeved



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

Цитата:
Wu Tang
имя ярлыка только в одном месте прописывается?

Да.
 

Всего записей: 838 | Зарегистр. 01-03-2003 | Отправлено: 16:35 18-05-2021 | Исправлено: kraeved, 16:59 18-05-2021
Wu Tang



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kraeved
а если несколько ярлыков нужно удалить, то:

Код:
 
<!-- :
@echo off
 
rem Ищем пути до рабочих столов пользователя, используя Windows Script Host
for /f "usebackq tokens=1* delims=;" %%a in (`cscript //nologo "%~f0?.wsf"`) do (
    rem Найдя столы, ищем на них файлы
    for %%d in ("%%a" "%%b") do call elFiles %%d
)
goto :eof
 
elFiles
    for %%f in (
        %= Перечисляем в столбик файлы, подлежащие удалению =%
        %= "Aknilorak69.lnk" не будет удалён, т.к. это комментарий =%
        "Configure FileMenu Tools.lnk"
        "number2.lnk"
        "number3.lnk"  
        ) do (
        rem Если файлы нашлись, то удаляем их без подтверждения
        if exist "%~1\%%~f" del /f "%~1\%%~f"
    )
goto :eof
-->
 
<job><script language="VBScript">
with CreateObject("Shell.Application")
    set desktopUser = .Namespace(16).Self
    set desktopPublic = .Namespace(25).Self
    WScript.Echo desktopUser.Path & ";" & desktopPublic.Path
end with
</script></job>
 


----------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!

Всего записей: 3313 | Зарегистр. 15-10-2007 | Отправлено: 19:37 18-05-2021 | Исправлено: Wu Tang, 19:42 18-05-2021
bomzz

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

Цитата:
For /F "delims=*" %%i In (curl -I http://url) Do (
set url=%%i
)
echo %url%>3.txt


Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 13:45 19-05-2021 | Исправлено: bomzz, 14:11 19-05-2021
kraeved



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

Цитата:
bomzz
Как из возвращаемого потока взять… последнюю… строку… с кучей защищённых знаков?

Код:
@echo off
set "_url=https://plugring.farmanager.com/plugin.php?l=en&pid=965"
for /f "tokens=*" %%a in ('curl -ILSs "%_url%"') do (set "_out=%%a")
cmd /v /c echo !_out!
goto :eof

$ getLastToken.cmd
Strict-Transport-Security: max-age=31536000; includeSubDomains
 
Wu Tang
Да. Это и есть перечисление файлов в столбик, о чём сообщает инструкция.

Всего записей: 838 | Зарегистр. 01-03-2003 | Отправлено: 21:57 19-05-2021 | Исправлено: kraeved, 22:06 19-05-2021
bomzz

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

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 22:31 19-05-2021
kraeved



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спрашивали, как создать ZIP в командной строке средствами Windows 7.
Прямого пути нет, предложил через PowerShell 2+ или Windows Script Host.
Если кто застрянет вдали от цивилизации с замшелым ноутом и без связи,
а данные нужны в ZIP для передачи голубиной почтой (они не любят CAB),
то пригодится этот гибридный батник с JScript, работающий даже в XP.

Всего записей: 838 | Зарегистр. 01-03-2003 | Отправлено: 00:18 21-05-2021 | Исправлено: kraeved, 00:22 21-05-2021
Wu Tang



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

----------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!

Всего записей: 3313 | Зарегистр. 15-10-2007 | Отправлено: 02:40 21-05-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите, как при замене части строки правильно защитить знаки = &  
set "_out=%_out:=%
что интересно если заменять НА защищенный знак достаточно одной крышки перед=
а если надо заменить защищенный знак уже не понятно
 
скажем в строке содержится ?xxx=000&yyy=111 как это удалить?
вообще ничего не получается, с ? вроде нет проблем

Код:
set "_out=%_out:?xxx^=000^^^&yyy^=111=%

 
нашел пример в котором знак = заменяют на звездочку для задания подстроки замены
их пример работает мой ни фига не работает

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 05:05 21-05-2021 | Исправлено: bomzz, 10:27 21-05-2021
GCRaistlin



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

Код:
 
@echo off
set _a1=%windir:w==%
set _a2=%windir:w=^&%
set _a
 


----------
Magically yours
Raistlin

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 10:58 21-05-2021
bomzz

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

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 13:32 21-05-2021
GCRaistlin



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

----------
Magically yours
Raistlin

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 13:44 21-05-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну резать строку циклом по знаку вопроса чтоб обрезать хвост с знаками равно, слишком ресурсо затратно кажется
 

Код:
for /f "delims=?" %%i in ("!_out!") do set "_out=%%i"

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 14:02 21-05-2021 | Исправлено: bomzz, 14:03 21-05-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzz
Какое отношение имеют знаки вопроса к знаку "равно"? Дайте пример исходной строки и что вы хотите получить.

----------
Magically yours
Raistlin

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 14:47 21-05-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
обрезать хвост урла после знака вопроса url?aaa=111&bbb=222
 
Добавлено:
а батники умеют любой текст удалять между определенными подстроками?
скажем aaa="любой текст" как вот это удалить из строки?

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 14:59 21-05-2021 | Исправлено: bomzz, 15:01 21-05-2021
GCRaistlin



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

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

Вы же выше привели рабочую конструкцию.
 

Цитата:
скажем aaa="любой текст" как вот это удалить из строки?

Что "вот это"?
Удалить можно что угодно - вопрос трудозатрат и скорости работы.

----------
Magically yours
Raistlin

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 15:05 21-05-2021
bomzz

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

Код:
aaa="111" bbb="222" ccc="333" ddd="444"

из строки надо удалить все aaa="111" bbb="222" ccc="333" но оставить ddd="444"
алгоритм: разбить строку по знаку пробела, сравнить первые три символа если равны ddd то оставить, если нет не клеить в новую строку. будет работать?

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 15:11 21-05-2021 | Исправлено: bomzz, 15:17 21-05-2021
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru