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

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

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

Цитата:
и если нет, то запускался от имени администратора

Проще говоря: нужна команда, чтобы bat-файл запускался от имени администратора.

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 15:33 26-06-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzz
Перенаправление вывода в nul. Вам же выше объясняли.
 
syrenium
Не выйдет.

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

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 15:41 26-06-2021
syrenium

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
В чем проблема?
В сети находил пару команд, но не понимаю их значения:

Код:
reg query "HKU\S-1-5-19\Environment" >nul 2>&1 & cls
if "%Errorlevel%" NEQ "0" ( cmd /u /c echo. CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "RunAs", 1 > "%Temp%\GetAdmin.vbs"
"%Temp%\GetAdmin.vbs" & del "%Temp%\GetAdmin.vbs" & cls & exit )

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 15:51 26-06-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
syrenium
Тема про cmd. А у вас тут vbs. Может, там и можно.

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

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 15:56 26-06-2021
kraeved



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

Код:
@echo off
rem Проверяем права и поднимаем их при надобности
reg add HKLM /f >nul 2>&1 || (powershell start '%~f0' ' %*' -verb runas 2>nul && exit || (echo Elevation failed & exit))
rem Имея права админа, выполняем следующие команды
echo Hello %*
pause
goto :eof

$ go.cmd Kraeved and Syrenium  
Hello Kraeved and Syrenium

Всего записей: 838 | Зарегистр. 01-03-2003 | Отправлено: 17:12 26-06-2021 | Исправлено: kraeved, 17:36 26-06-2021
generator324

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

Цитата:
Hello Kraeved and Syrenium

Вещь! Ничего сложного, конечно. Для тех, кто просветлён ))

Всего записей: 985 | Зарегистр. 11-01-2019 | Отправлено: 17:36 26-06-2021
bomzz

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

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 06:40 27-06-2021 | Исправлено: bomzz, 11:57 27-06-2021
syrenium

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kraeved
Спасибо! Более простое решение.

Код:
reg add HKLM /f >nul 2>&1 || (powershell start '%~f0' ' %*' -verb runas 2>nul && exit || (echo Elevation failed & exit))

1. Попытка создать параметр с пустым значением в разделе HKLM. Если получилось, переходит к следующей строке.
2. Если ошибка, запускает с помощью powershell этот же файл ('%~f0') от имени администратора (-verb runas). Если получилось, выход из powershell.
3. Если ошибка, выводит сообщение "Elevation failed & exit".
Я правильно понимаю алгоритм действий?
И что означает ' %*' ?

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 12:09 27-06-2021
kraeved



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
syrenium
Если есть доступ к реестру, то есть и права админа, тогда продолжаем обычное выполнение.
Если доступа нет, то пробуем перезапустить батник через PowerShell с правами админа:
    если получилось, то завершаем оригинальный батник, ибо уже работает его копия;
    если не получилось, то сообщаем об ошибке и выходим.
 
В моём примере PowerShell перезапускает батник с теми же параметрами, кои пользователь
указывал изначально. Если вы не используете параметры, то часть ` %*` можно удалить.
 
Добавлено:
Добавил альтернативное решение без PowerShell — через JScript.

Всего записей: 838 | Зарегистр. 01-03-2003 | Отправлено: 12:41 27-06-2021 | Исправлено: kraeved, 14:54 27-06-2021
syrenium

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

Код:
goto :eof

Для чего в конце файла?

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 13:27 27-06-2021
GCRaistlin



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

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

Немножко индусский вывод.

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

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 13:37 27-06-2021
kraeved



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

Цитата:
syrenium
Для чего в конце файла goto :eof?

Для порядка. Эта команда прерывает батник (eof = end of file), её можно заменить на exit.
Пригодится, например, при вызове из другого батника или для комментария под кодом без rem.  

Всего записей: 838 | Зарегистр. 01-03-2003 | Отправлено: 14:39 27-06-2021 | Исправлено: kraeved, 15:39 27-06-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кто нибудь разбирается в кодировках?
получается что For или замена :@=$"  
режут utf-8 текстовую строку тем не менее успешно,
но всегда ли в таком случае возникают неправильные обрезки
кроме последнего куска, обрезанное начало при этом не портится.
при конвертировании в 866 начало может корректируется.
текст надо сначала конвертировать потом резать

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 14:47 27-06-2021 | Исправлено: bomzz, 15:06 27-06-2021
syrenium

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

Цитата:
eof = end of file

Да, я в курсе. Вот, и задался вопросом: зачем команда для перехода в конец файла в конце файла.
GCRaistlin

Цитата:
Немножко индусский вывод.

Не стал дискутировать. Но не всегда доступ к реестру предполагает права админа. Для HKLM - да, для HKCU - нет.
kraeved

Цитата:
без PowerShell — через JScript

А есть практическая разница между PowerShell, VBS и JS в данной ситуации?

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 16:38 27-06-2021 | Исправлено: syrenium, 16:38 27-06-2021
GCRaistlin



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

Цитата:
не всегда доступ к реестру предполагает права админа. Для HKLM - да

И для HKLM - не да: никто не мешает дать права на запись в HKLM всем пользователям. Поэтому такой способ проверки ущербен.

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

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 16:46 27-06-2021
kraeved



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

Цитата:
syrenium
Зачем команда для перехода в конец файла в конце файла…

Есть вещи, которые непонятны с наскока, но их значение открывается с практикой.
Например, квадрат Малевича зачем водосток на скатной крыше, если вода и так стекает?
Сейчас goto :eof можно удалить вслед за ` %*` — они пригодятся, когда задача усложнится.

Цитата:
А есть практическая разница между PowerShell, VBS и JS в данной ситуации?

Я не знаю вашей ситуации, упоминалась лишь используемая ОС семейства Windows 10 x64.
Тот спагетти-код с VBScript, который вы нашли, менее экологичен из-за создания и удаления
файлов, что изнашивает диск. А сравнивая мои решения: JScript чуть быстрее PowerShell.

Цитата:
Но не всегда доступ к реестру предполагает права админа…

Объясняя код человеку, далёкому от кода, излишне сразу отягощать всеми нюансами —
достаточно приблизительного ответа, сродни тому как «человек с бульвара Капуцинов»
объясняет «откуда берутся дети». Далее ответ можно уточнить а-ля прогрессивный JPG.
 
Разница в подходах становится очевиднее при введении дополнительных условий. Скажем,
проверка прав через net session, которую предлагал GCRaistlin, не работает в Safe Mode,
т.к. в этом режиме (даже с Networking) не запускается сервис Server, нужный команде net.
А если вы окажитесь в государственно-корпоративной среде, серьёзно зарегулированной
через Group Policies, то все решения дадут маху, как и в случае урезанных образов WinPE,
но сейчас-то зачем забивать этим голову — кушайте клубнику, наслаждайтесь летом.
 





меньше пафоса и непрофильных картинок

Всего записей: 838 | Зарегистр. 01-03-2003 | Отправлено: 18:07 27-06-2021 | Исправлено: Maz, 00:23 04-07-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
можно в один поток послать две строки не склеивая их предварительно в один файл?
 
 
удобняшку слепил, перепуливает файл, путь к которому передан командной строкой без кавычек, в поток,
в независимости от размера и содержащихся знаков.
filetostream.zip  971 байт
возвращает число переданных байт или -1 в случае ошибки открытия файла
 
ошибку умудрился ляпнуть, исправил, 16-ричный указатель не туда поставил
но она правильно работала просто буфер был меньше возможного в шесть с половиной раз
utf8to866.zip  2,98 КБ (3 056 байт)
 

Цитата:
filetosream c:\file.utf8.txt|utf8to866>file.866.txt


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

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




оффтоп

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 06:52 30-06-2021 | Исправлено: Maz, 00:22 04-07-2021
los

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzz,
pdftotext _http://www.xpdfreader.com/download.html Но не из всех файлов pdf можно извлечь текст. Этот вопрос лучше обсуждать в http://forum.ru-board.com/topic.cgi?forum=5&topic=17599#1

Всего записей: 4601 | Зарегистр. 08-09-2001 | Отправлено: 09:18 30-06-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
только что его качал. утилита pdf to text платная




оффтоп

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 09:58 30-06-2021 | Исправлено: Maz, 00:22 04-07-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