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

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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код
 
Задача такова, чтобы в CHOICE можно было указать только числа входящие в диапазон чисел 1-5, как одно число, так и через запятую, либо только знак "*" (звезда). Если в CHOICE введено что-то не по правилу, снова вызываем GOTO:ChoiceEditionMenu.
 
Все работает как мне надо, но не совсем. Если я в CHOICE введу, например 1,3,5,6 или 8,7,6,5, то ввод будет считаться верным, а ведь это НЕ ТАК, ибо присутствуют цифры не входящие в диапазон чисел 1-5. Западло в том, что если вводе присутствует хоть одна цифра входящая в диапазон чисел 1-5, ввод будет считаться верным. Помогите решить проблемы, плиз, зарнее спасибо. По возможности, попрошу, не сильно меняйте структуру кода, так как это часть кода из основго батника, код должен рабоать без сторонихх утилит и на XP.

----------
Мама не горюй

Всего записей: 3586 | Зарегистр. 29-01-2005 | Отправлено: 16:54 28-03-2018 | Исправлено: boss911, 16:56 28-03-2018
thejustsoul



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

Цитата:
Окно не закрывается после пуска, постоянно висит

Так и должно быть, хотите скрыть окно - используйте утилиты для скрытия консольных окон.

Всего записей: 1782 | Зарегистр. 30-03-2014 | Отправлено: 17:18 28-03-2018 | Исправлено: thejustsoul, 17:22 28-03-2018
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
boss911
В данном случае лучше сделать что-то типа установки-снятия отметок, типа как галки, но по цифрам...

Всего записей: 10071 | Зарегистр. 11-03-2002 | Отправлено: 17:32 28-03-2018
shadow_member



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

Цитата:
ТАМ ЕЁ ЕЩЁ РЕГИТЬ НАДО,
+ привязка к железу + активация в онлайне, нехило!

Всего записей: 21927 | Зарегистр. 18-07-2006 | Отправлено: 17:48 28-03-2018
YuS_2



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

Цитата:
чтобы в CHOICE можно было указать только числа входящие в диапазон чисел 1-5, как одно число, так и через запятую, либо только знак "*" (звезда). Если в CHOICE введено что-то не по правилу, снова вызываем GOTO:ChoiceEditionMenu.


Код:
@echo off
:ChoiceEditionMenu  
cls
set "choice="
set /p choice="Enter index number or "*" => "  
set "choice=%choice:,= %"
echo. %choice%|findstr /irc:"[^1-5 \*]"&&goto ChoiceEditionMenu
pause&&exit /b

Всего записей: 3199 | Зарегистр. 03-02-2009 | Отправлено: 17:54 28-03-2018
boss911



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
 
Проходят числа в диапазоне 51-55, что для меня не допустимо, когда правило 1-5.
 
Добавлено:
И ввод 2,4,5* тоже не верный, нельзя чтобы было 1-5 и символ *.

----------
Мама не горюй

Всего записей: 3586 | Зарегистр. 29-01-2005 | Отправлено: 19:07 28-03-2018
Sinclair83

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

Код:
@Echo off
 
SET TotCntIndex=5
:START
CALL:ChoiceEditionMenu
 
FOR %%I IN (%IndexEdition%) DO IF %%I GTR %TotCntIndex% GOTO:START
 
CLS
FOR %%I IN (%IndexEdition%) DO ECHO %%I
 
PAUSE
EXIT
 
:ChoiceEditionMenu
 CLS
 SET CHOICE=
 SET /P CHOICE="Enter index number or "*" => "
 SET "CHOICE=%CHOICE:,= %"
 FOR %%A IN (%CHOICE%) DO (
   FOR /L %%B IN (1,1,%TotCntIndex%) DO (
    IF "%%A"=="%%B" SET "IndexEdition=%CHOICE%" & GOTO:EOF
   )
 )
 IF "%CHOICE%"=="*" SET "IndexEdition=%CHOICE%" & GOTO:EOF
GOTO:ChoiceEditionMenu

Всего записей: 744 | Зарегистр. 07-01-2009 | Отправлено: 19:28 28-03-2018 | Исправлено: Sinclair83, 19:58 28-03-2018
boss911



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

Код:
:START
CALL:ChoiceEditionMenu
 
FOR %%I IN (%IndexEdition%) DO IF %%I GTR %TotCntIndex% GOTO:START

Неудобно мне так будет, да и не дает ввести "*" (звезду). Хочу проверку осуществить в пределах одной метки :ChoiceEditionMenu.


----------
Мама не горюй

Всего записей: 3586 | Зарегистр. 29-01-2005 | Отправлено: 20:16 28-03-2018
YuS_2



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

Цитата:
Проходят числа в диапазоне 51-55, что для меня не допустимо, когда правило 1-5.  
 
Добавлено:  
И ввод 2,4,5* тоже не верный, нельзя чтобы было 1-5 и символ *.

Ну, сообразиловку надо включать иногда... это же пример, как можно организовать проверку.
И условия сразу полнее описывать надо, если требуется более точный вариант...

Код:
@echo off
:ChoiceEditionMenu  
cls
set "choice="
set /p "choice=Enter index number or "*" => "
set "choice=%choice:,= %"
echo.%choice%|>nul findstr /irc:"[^1-5 \*]" /c:"\*." /c:".\*" /c:"[1-5][1-5]"&&goto ChoiceEditionMenu
pause&&exit /b

Всего записей: 3199 | Зарегистр. 03-02-2009 | Отправлено: 22:48 28-03-2018 | Исправлено: YuS_2, 23:07 28-03-2018
boss911



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

Цитата:
Ну, сообразиловку надо включать иногда...

Если бы она была, как у здешних гуру. Я с регулярными выражениями плохо дружу, смотрю на строку с findstr и никак не переварю. Огромное спасибо, то, что нужно.
 
Подскажите, плиз, еще один вариант с findstr, основываясь на последнем, который бы исключал ввод "*", как одиночно символа (*), так и вместе с цифрами (1,3,5*).

Код:
findstr /irc:"[^1-5 \*]" /c:"\*" /c:"[1-5][1-5]"

Правильно?

----------
Мама не горюй

Всего записей: 3586 | Зарегистр. 29-01-2005 | Отправлено: 01:57 29-03-2018
YuS_2



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

Цитата:
который бы исключал ввод "*"
...
Правильно?

не так...

Код:
echo.%choice%|>nul findstr /irc:"[^1-5 ]" /c:"[1-5][1-5]"&&goto ChoiceEditionMenu

Всего записей: 3199 | Зарегистр. 03-02-2009 | Отправлено: 10:27 29-03-2018
boss911



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
 
Вот блин. Я сразу так и сделал, но моей ошибкой было то, что убрав \* из /irc:"[^1-5 \*]" я и пробел убрал, после чего не работал ввод нескольких цифр через запятую. Еще раз огромное вам спасибо, шикарное решение получилось.

----------
Мама не горюй

Всего записей: 3586 | Зарегистр. 29-01-2005 | Отправлено: 15:59 29-03-2018
shveicar



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем привет.
Есть такой вопрос.
Существует батник для подключения виртуального диска через встроенную в windows7 утилиту diskpart.

Код:
(
echo select vdisk file="d:\disk\1.vhd"
echo attach vdisk
) | diskpart  

 
Пытаюсь убрать переносы и привести его к одной строке, для прямого вызова этой команды в окне cmd.exe, но тогда сценарий уже не работает.
Как должна выглядеть эта команда для прямого срабатывания в консоли?

Всего записей: 324 | Зарегистр. 26-09-2010 | Отправлено: 21:55 31-03-2018
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
shveicar
Цитата:
(echo select vdisk file="d:\disk\1.vhd"&echo attach vdisk)|diskpart

Всего записей: 10071 | Зарегистр. 11-03-2002 | Отправлено: 22:03 31-03-2018
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ещё же и выход надо
(echo select vdisk file="d:\disk\1.vhd"&echo attach vdisk&echo exit)|diskpart

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

Всего записей: 3456 | Зарегистр. 23-04-2009 | Отправлено: 22:09 31-03-2018
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
необязательно... если команды посланы через стдин - сам закрывается в конце

Всего записей: 10071 | Зарегистр. 11-03-2002 | Отправлено: 22:13 31-03-2018
shveicar



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

Всего записей: 324 | Зарегистр. 26-09-2010 | Отправлено: 22:15 31-03-2018
VidelSamogO



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Публиковал когда-то Pasha_ZZZ замечательный скриптик для сжатия и оптимизации баз в профиле Chrome. И всех хромоногих, и не только, браузеров. С помощью sqllite3.exe. Причём данный командный файл гораздо лучше существующих программ, типа speedyfox, поскольку лезет во все подкаталоги профиля и оптимизирует всё, что не определяет speedyfox.
Ссылка
Я немного отвязал её от sqllite3.exe, необходимой в той же папке. И теперь sqllite3.exe достаточно просто кинуть в каталог, прописанный в path. Но вот что хотелось-бы усовершенствовать. При каждом запуске этот скрипт натравливает сжималку на все файлы профиля. Вне зависимости от того, сжат этот файл и уже после этого дефрагментирован, или нет. А хотелось бы, чтобы при каждом проходе скрипт составлял список сжимаемых файлов и при последующих проходах, если размер и дата файла по данному пути не изменились, то не трогал его, а просто пропускал мимо. Зачем тревожить винт, если и так понятно, что если вы не маньяк, гоняющий профиль с диска на диск, то этот файл даже не фрагментирован. Кстати, хотелось бы, чтобы и консольным дефрагментатором Сontig или Defragme, этот скриптик также пробегался по всем изменившимся файлам профиля.

Всего записей: 764 | Зарегистр. 16-08-2008 | Отправлено: 03:58 04-04-2018 | Исправлено: VidelSamogO, 10:37 04-04-2018
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
VidelSamogO
Скрипт открывает все файлы и по сигнатуре в начале определяет, что это база SQLite. Он не хранит никаких списков и просто на все подряд файлы SQLite натравливает VACUUM.

Всего записей: 10071 | Зарегистр. 11-03-2002 | Отправлено: 10:02 04-04-2018
VidelSamogO



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

Цитата:
Он не хранит никаких списков и просто на все подряд файлы

Приветствую. Это-то и хотелось бы изменить в вашем скрипте. Это и есть его слабое место. Зачем он на уже оптимизированные базы VAQUUM натравливает?

Всего записей: 764 | Зарегистр. 16-08-2008 | Отправлено: 10:35 04-04-2018 | Исправлено: VidelSamogO, 10:35 04-04-2018
   

Страницы: 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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru