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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 61 62 63 64 65 66 67

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

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

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kraeved
Вот тебе бабушка и Юрьев день Я то надеялась услышать чёткий, технически обоснованный ответ, а получила интуитивно - мистический. Такое ожидается скорее от меня услышать, а не от Вас. Тут какой-то гендерный парадокс, не находите?

Всего записей: 103 | Зарегистр. 23-02-2018 | Отправлено: 14:21 17-05-2021
GCRaistlin



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

Цитата:
Задержку в XP всё же можно сделать без sleep и timeout

В гамаке и стоя.

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

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 14:23 17-05-2021
grey109



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
 
Не помогло, даже скажу больше после после этого батника модем зависает, приходить передергивать.
 
(echo AT+CSCS="GSM"
1>&2 ping -n 5 127.0.0.1
)>com4 2>nul
 
(echo AT+CMGF=1
1>&2 ping -n 5 127.0.0.1
)>com4 2>nul
 
////////////// зависает после этой строки
(echo AT+CMGS="+71234567890"
1>&2 ping -n 5 127.0.0.1
)>com4 2>nul
 
(echo 123
1>&2 ping -n 5 127.0.0.1
)>com4 2>nul
 
(echo ^^Z
1>&2 ping -n 5 127.0.0.1
)>com4 2>nul
 
kraeved
sleep ожидаемо не помог.
 
Наверно дело все таки в том что serialsend делает задержку "после передачи указанного текста, но до закрытия последовательного порта". пинги/слипы/таймуты работают по другому.
 
Так что наверно буду юзать serialsend.

Всего записей: 130 | Зарегистр. 13-11-2003 | Отправлено: 15:08 17-05-2021 | Исправлено: grey109, 15:08 17-05-2021
GCRaistlin



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

Код:
 
((echo AT+CMGS="+71234567890")
>nul ping -n 5 127.0.0.1
)>com4
 


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

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Karolinka69
У горы есть разные маршруты покорения, к Богу ведут разные юдоли и так далее.
Например, попросим создать пустой файл. Первый выдаст copy nul love.txt, второй
напишет type nul > love.txt, третий предложит break > love.txt или call > love.txt,
в числе иных наверняка прозвучит и fsutil file createnew love.txt 0 — все подходы
будут верны уместны, если не вводить дополнительных условий. Остаётся ахнуть
перед лицом обогащающего разнообразия, дарующего гибкость, чем и восхищают
площадки на базе Stack Exchange, где мирно сосуществуют несколько подходов.
У нас иначе — правдорубы миссионеры Истины Единой тут же ринутся на ереси,
обесценивая недостаточно универсальные (современные, короткие…) подходы.

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Ни пробелов, ничего лишнего нет.
 
((echo AT+CMGS="+71234567890")
>nul ping -n 5 127.0.0.1
)>com4
 
тоже на этой строке виснет (программа от мегафога, которая ставится с флешки начинает писать что сеть не найдена). Взял другой модем М150-1, вместо М150-2 - всё тоже самое.
 
Не знаю, знаете ли вы С++ вот исходник программы serialsend, которая корректно работает. Может в нем будет видно, как реализована задержка. https://batchloaf.wordpress.com/serialsend/

Всего записей: 130 | Зарегистр. 13-11-2003 | Отправлено: 16:09 17-05-2021
Karolinka69



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kraeved
Ох ты гой еси... Ой, чего это я. Заразительно однако Судя по всему, Вы только мне так отвечаете. Ну что ж, считайте оценила, хотя я вполне бы удовлетворилась ответом - это ещё один вариант решения задачи. Но перед Вашим стилем... кхм, "снимаю шляпу" для меня как-то вульгарно, скажу так - поднимаю вуаль перед Вашим стилем

Всего записей: 103 | Зарегистр. 23-02-2018 | Отправлено: 16:15 17-05-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
grey109
Возможно, дело в том, что echo посылает вдобавок символ перевода строки.

Код:
 
(<nul (set /p=AT+CMGS="+71234567890")
>nul ping -n 5 127.0.0.1
)>com4
 

 
kraeved
Многообразие ради многообразия - бессмысленно.

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

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 16:19 17-05-2021
KiloSub



Запрет на пост
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin умны Вы Чел, не для Вас это форум. И не для меня, к сожалению.

Всего записей: 420 | Зарегистр. 30-05-2020 | Отправлено: 16:19 17-05-2021 | Исправлено: KiloSub, 16:20 17-05-2021
lexapass



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
grey109
Попробуйте делать миллисекундные паузы с nircmd.
 
...
echo ... >com4
nircmd.exe wait 500
...
 
GCRaistlin

Цитата:
Возможно, дело в том, что echo посылает вдобавок символ перевода строки.  

Sendserial тоже шлет .../0x0D/0x0A

Всего записей: 555 | Зарегистр. 11-10-2004 | Отправлено: 16:34 17-05-2021
grey109



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
 
(<nul (set /p=AT+CMGS="+71234567890")
 
После замены - перестало виснуть, но смс не приходят.
 
lexapass

Цитата:
nircmd.exe wait 500

Не помогло.
 
Странно, в интернете полно примеров как народ аналогичным образом шлет смс-ки из командной строки и вроде как ни у кого с этим проблем нет, а тут и так и сяк и никак.

Всего записей: 130 | Зарегистр. 13-11-2003 | Отправлено: 16:48 17-05-2021 | Исправлено: grey109, 16:48 17-05-2021
kraeved



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
grey109
Спросите у Теда Бёрка, автора SerialSend. Напишите, мол, пробую повторить
такие-то команды вашей программы в виде батника — почему-то не выходит.
Помимо этого блога он есть на Гитхабе, но там след простыл. Ещё есть почта.

Всего записей: 838 | Зарегистр. 01-03-2003 | Отправлено: 17:11 17-05-2021 | Исправлено: kraeved, 17:23 17-05-2021
GCRaistlin



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

Цитата:
После замены - перестало виснуть, но смс не приходят.

Уже прогресс. Давайте избавимся от множественных открытий/закрытий порта:

Код:
 
(
  <nul (set /p=AT+CSCS="GSM")
  >nul ping -n 5 127.0.0.1
  <nul (set /p=AT+CMGF=1)
  >nul ping -n 5 127.0.0.1
  ...
)>com4
 

 
Добавлено:
lexapass

Цитата:
Попробуйте делать миллисекундные паузы с nircmd.

Нет разницы, как делать паузы. Не в них дело.

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

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 17:40 17-05-2021 | Исправлено: GCRaistlin, 18:22 17-05-2021
Wu Tang



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

Код:
 
@echo off
set link="%username%\Рабочий Стол\Configure FileMenu Tools.lnk"
if exist %link% del /Q /F %link%
set link="%usersname%\Desktop\Configure FileMenu Tools.lnk"
if exist %link% del /Q /F %link%
del /Q /F "%public%\Desktop\Configure FileMenu Tools.lnk"
exit
 


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

Всего записей: 3330 | Зарегистр. 15-10-2007 | Отправлено: 18:24 17-05-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Wu Tang
Смотря что вы подразумеваете под универсальностью. Кстати, /Q здесь точно лишний.

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

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 18:29 17-05-2021
Wu Tang



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

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

Всего записей: 3330 | Зарегистр. 15-10-2007 | Отправлено: 19:15 17-05-2021
wadimuss

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

Код:
for /f "tokens=3*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop') do set folder=%%~a
del %folder%\<ненужный нам линк>.lnk /q

 
писал уже: #

Всего записей: 929 | Зарегистр. 24-11-2008 | Отправлено: 22:24 17-05-2021 | Исправлено: wadimuss, 22:39 17-05-2021
Wu Tang



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

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

Всего записей: 3330 | Зарегистр. 15-10-2007 | Отправлено: 23:04 17-05-2021
wadimuss

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

Код:
..
set "folder=%%~a"
del "%folder%\<ненужный нам линк>.lnk" /q

Всего записей: 929 | Зарегистр. 24-11-2008 | Отправлено: 23:28 17-05-2021
kraeved



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

Цитата:
Wu Tang
…скрипт для удаления ярлыков с рабочего стола [одного ярлыка с двух столов]…
…как универсальный… с разными языками осей, например…

Проверял на Win XP x86 и Win 7 x64, с разными языками и диковинным расположением столов.

Код:
<!-- :
@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 :delFiles %%d
)
goto :eof
 
:delFiles
    for %%f in (
        %= Перечисляем в столбик файлы, подлежащие удалению =%
        %= "Aknilorak69.lnk" не будет удалён, т.к. это комментарий =%
        "Configure FileMenu Tools.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>

Всего записей: 838 | Зарегистр. 01-03-2003 | Отправлено: 01:29 18-05-2021 | Исправлено: kraeved, 04:11 18-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 61 62 63 64 65 66 67

Компьютерный форум 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

Рейтинг.ru