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

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

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

Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

cchameleone



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

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ 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 (PDF). Курс лекций для начинающих
· Бокалий В. Командная строка (pdf-брошюрка в 20 страниц)
· Александров А., Дибров А. Урок bat-аники (pdf)
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Скрываем консольные окна, Выполнение BAT-скриптов без вызова окна консоли
· cmdow — изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· blat — отправка почты из консоли
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)

Всего записей: 2279 | Зарегистр. 16-10-2015 | Отправлено: 09:22 29-04-2016 | Исправлено: Maz, 08:47 26-03-2020
YuS_2



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

Цитата:
Это вы лезете в бутылку.

Опять двадцать пять. Это я пришел и безапелляционно заявил:

Цитата:
"=" - разделитель параметров в комстроке. Соответственно, задача неразрешима.

Ты точно ничего не попутал?
Вылазь сначала сам из пузыря...
 

Цитата:
Значит, ваш вариант неуниверсален

А кто говорил об универсальности? Есть задача, есть решение. Точка. Никто не обязан описывать и обслуживать все баги и недоработки cmd.
Что ты там себе вообразил - это твое личное, я туда не лезу... хочется искать подводные камни - вперед!

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:39 15-01-2019
GCRaistlin



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

Цитата:
Опять двадцать пять. Это я пришел и безапелляционно заявил

Я заявил то, что есть на деле.

Цитата:
А кто говорил об универсальности?

Раз уточнений при постановке задачи не было - предполагается надобность в универсальном решении. Тем более если речь о парсинге параметров.

Цитата:
Никто не обязан описывать и обслуживать все баги и недоработки cmd.  

Это не баги, а особенность реализации. Если вы не хотите их учитывать для себя - на здоровье, но предлагать другим некорректные решения не стоит. А тем более неадекватно реагировать, когда их некорректность наглядно показана.

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

Всего записей: 3997 | Зарегистр. 18-04-2005 | Отправлено: 20:55 15-01-2019
YuS_2



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

Цитата:
Я заявил то, что есть на деле.

Вот ты какой... красавец! Любуйся, чего уж там
Тебе показали, что ты неправ, а ты уперся и толчешь воду в ступе, вместо того, чтобы признать, что был неправ... вот и вся ситуация.
 

Цитата:
Это не баги, а особенность реализации.

Ты всегда читаешь то, что только хочется? Особенностью реализации можно называть что угодно, в том числе и баги.  
Но то, что спецсимволы для cmd - камень преткновения во многих ситуациях, это конкретная недоработка/недосмотр/непродуманное решение (нужное подчеркнуть)  разработчиков, вот это факт.
 

Цитата:
предлагать другим некорректные решения не стоит.

весь cmd - одно большое и некорректное решение...  
 

Цитата:
неадекватно реагировать

Пффф, у тебя видимо микроскоп со слишком большим увеличением. Где неадекватность-то?
Ты учись ошибки признавать, остальное приложится.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 21:05 15-01-2019
GCRaistlin



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

Цитата:
Тебе показали, что ты неправ

Напротив, это я показал, что не правы (исходя из формулировки поставленной задачи) как раз вы. Сначала произвольно окавычили передаваемый параметр, затем произвольно предположили, что там не может быть амперсанда.
 

Цитата:
Но то, что спецсимволы для cmd - камень преткновения во многих ситуациях, это конкретная недоработка/недосмотр/непродуманное решение (нужное подчеркнуть)  разработчиков, вот это факт.

Отнюдь. Надо просто давать себе труд учитывать возможность их наличия при написании скриптов.
 

Цитата:
весь cmd - одно большое и некорректное решение...

Я предполагал, что все в конце концов съедет на эту мантру. Ну, плохому танцору известно что мешает.
 

Цитата:
Где неадекватность-то?

Примерно в каждом вашем посте, начиная с этого.

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

Всего записей: 3997 | Зарегистр. 18-04-2005 | Отправлено: 21:15 15-01-2019
YuS_2



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

Цитата:
это я показал, что не правы

Кроме выпячиваемого ЧСВ, ты ничего не показал.
 

Цитата:
Надо просто давать себе труд учитывать возможность их наличия при написании скриптов.  

Да ладно?! А когда не получается, заявить:
Задача нерешаема! Так что ли? Ну-ну...
 

Цитата:
Ну, плохому танцору известно что мешает.

Знак равно в комстроке, наверное?
Тут задача не решаема, там особенность реализации... так с чем ты споришь тогда? Вот упертый же.
 

Цитата:
в каждом вашем посте

Вот я и говорю, свои бревна нафиг не надо замечать, а чужие соринки под микроскоп, под микроскоп... так оно веселее.
Что и следовало ожидать.
Ладно, чего тут бодягу разводить, всё равно, ты ведь никогда и нигде ещё не признавал, что неправ, даже в очевидных ситуациях...
Мне лично надоело уже пытаться донести до тебя хоть какую-то здравую мысль...  
Ты прав, а я дурак. Успокойся уже. Спокойной ночи...  

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 21:32 15-01-2019
GCRaistlin



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

Цитата:
Да ладно?! А когда не получается, заявить:
Задача нерешаема! Так что ли?

Именно. Это лучше, чем предлагать заведомо ущербный вариант, а потом апеллировать к тому, что, мол, никто не говорил, что нужно универсальное решение.
 

Цитата:
Знак равно в комстроке, наверное?

Он мешает всем танцорам. Но плохим мешает еще куча вещей.

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

Всего записей: 3997 | Зарегистр. 18-04-2005 | Отправлено: 21:49 15-01-2019
vasilek687

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем Привет. Ребята если не трудно:
нужены два батника для добавления в контекстное меню W-7:
-копировать имя фала(папки) в буфер обмена.
-удалить все содержимое папки.

Всего записей: 62 | Зарегистр. 05-09-2010 | Отправлено: 12:34 16-01-2019 | Исправлено: vasilek687, 14:12 16-01-2019
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
-копировать имя фала(папки) в буфер обмена. есть и так при зажатом Shift

----------
Мы все умрём. (-:

Всего записей: 4916 | Зарегистр. 23-04-2009 | Отправлено: 15:14 16-01-2019
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000
Что-то я такого у себя не вижу.
 
vasilek687
Помню, я пробовал сделать что-то подобное под WinXP, но там приходилось плясать с бубном из-за необходимости перекодировки. А в более поздних, по-моему, и пункт-то толком в контектное меню не добавить.

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

Всего записей: 3997 | Зарегистр. 18-04-2005 | Отправлено: 16:08 16-01-2019
vasilek687

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

Код:
cmd /c for %%f in ("%1") do <nul set /p="%%~nxf"|clip.exe
-работает,
вставляю команду в батник имя на выходе:  

Код:
путь >set /p=""

мож в батнике как то подругому написать?

Всего записей: 62 | Зарегистр. 05-09-2010 | Отправлено: 16:35 16-01-2019 | Исправлено: vasilek687, 16:40 16-01-2019
GCRaistlin



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

Код:
 
@echo off
set "File=%~1"
if not "%File:&=%" == "%File:&=@%" set "File=%File:&=^&%"
setlocal enabledelayedexpansion
echo !File!|clip.exe
 


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

Всего записей: 3997 | Зарегистр. 18-04-2005 | Отправлено: 17:05 16-01-2019
vasilek687

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

Всего записей: 62 | Зарегистр. 05-09-2010 | Отправлено: 17:25 16-01-2019
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vasilek687
Я пробовал вручную с параметром - копирует:

Код:
 
NameToClip.cmd "foo & bar.txt"
 


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

Всего записей: 3997 | Зарегистр. 18-04-2005 | Отправлено: 17:30 16-01-2019
vasilek687

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

Цитата:
в реестре
 
Код:
cmd /c for %%f in ("%1") do <nul set /p="%%~nxf"|clip.exe  

окно тока мелькающее раздражает..

Всего записей: 62 | Зарегистр. 05-09-2010 | Отправлено: 17:52 16-01-2019 | Исправлено: vasilek687, 18:14 16-01-2019
GCRaistlin



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

Код:
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\NameToClipboard]
@="Copy name to clipboard"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\NameToClipboard\command]
@="cmd.exe /c NameToClip.cmd \"%1\""
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\NameToClipboard]
@="Copy name to clipboard"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\NameToClipboard\command]
@="cmd.exe /c NameToClip.cmd \"%1\""
 

 
GCRaistlin

Цитата:
в более поздних, по-моему, и пункт-то толком в контектное меню не добавить

Разобрался, в чем была проблема. Нормально все добавляется.
 
Добавлено:
vasilek687

Цитата:
окно тока мелькающее раздражает

https://superuser.com/questions/62525/run-a-batch-file-in-a-completely-hidden-way


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

Всего записей: 3997 | Зарегистр. 18-04-2005 | Отправлено: 19:31 16-01-2019
Smitis



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

Цитата:
Нужно проверить, батник запущен с ключом /param=value или без него. Так же, в командной строке запуска батника могут быть и другие параметры, в которых знак "=" отсутствует. Название ключей строго так, как в моем примере.  

Гибридный файл cmd+js

Код:
@if (true == false) @end /*
@echo off
%SystemRoot%\System32\cscript.exe //nologo //e:javascript "%~f0" %*
if errorlevel 1 echo OK
exit /b */
var args = WScript.Arguments;
for (var i=0; i<args.length; i++) if (args(i).match(/\/param=value/i)) WScript.Quit(1);


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

Всего записей: 3215 | Зарегистр. 09-02-2003 | Отправлено: 20:45 16-01-2019 | Исправлено: Smitis, 20:48 16-01-2019
vasilek687

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
большое спасибо за помощь
 
сделал так:
-копировать имя фала(папки) в буфер обмена-

Код:
@echo off
echo "%~nx1"
cmd.exe /c "<nul set /p"=%~nx1"|clip.exe"

батник конвертировал в exe этим
команда в реестре: C:\script\copyname.exe "%1"
 
-удалить содержимое папки-

Код:
@echo off
cmd /c "cd /d %1 && del /s /f /q *.*"

батник конвертировал в exe этим
команда в реестре: C:\script\deletecontentsfolder.exe "%1"

Всего записей: 62 | Зарегистр. 05-09-2010 | Отправлено: 10:49 17-01-2019 | Исправлено: vasilek687, 10:50 17-01-2019
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vasilek687
Какой-то непонятный код. Сначала вы выводите имя на экран (зачем?), затем в новой копии cmd.exe (зачем?) помещаете его в буфер. При этом, если в имени есть "&", ваш скрипт повалится с ошибкой.
 
Можно вообще обойтись без батника - выше я что-то сильно намудрил. Если требуется копирование полного пути, то просто:

Код:
 
cmd.exe /c <nul set /p"=%1"|clip.exe
 

А вот если нужно только имя, то приходится шаманить: почему-то при запуске cmd.exe из контекстного меню он не переваривает команду FOR. Поэтому запускаем cmd из cmd:

Код:
 
cmd.exe /c cmd.exe /c for %%A in ("%1") do <nul @set /p"=%%~nxA"|clip.exe
 


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

Всего записей: 3997 | Зарегистр. 18-04-2005 | Отправлено: 13:13 17-01-2019 | Исправлено: GCRaistlin, 13:17 17-01-2019
vasilek687

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

Всего записей: 62 | Зарегистр. 05-09-2010 | Отправлено: 05:30 18-01-2019 | Исправлено: vasilek687, 11:49 18-01-2019
Deoptimizer

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

Цитата:
Доброе время, Deoptimizer  
В любом случае смотрите в сторону ADODB.Stream.  
Заменить 10 байт начиная с 30 в файле 3.txt на 10 первые байт из файла 2.txt. Сохранить в 3.txt.patched  

 
Спасибо, это работает на Windows. Но компонент "ADODB.Stream" на WinPE работать отказывается:

 
Кто-то может предложить еще варианты?
 

Цитата:
Нужно использовать cmd для перезаписи в бинарный файл данных по смещению.  
 
Знаю есть утилита dd:  
 

Код:
dd bs=1 seek=14256 count=374 if=данные.bin of=выход.bin

 
 
Но мне нужно это реализовать исключительно через штатные средства WinPE - т.е. batch или VBScript или может есть еще что-то?

Всего записей: 315 | Зарегистр. 12-06-2015 | Отправлено: 12:29 18-01-2019 | Исправлено: Deoptimizer, 12:31 18-01-2019
   

Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru