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

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

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

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.10 до Windows 11 +Win95cmd +ReactOS) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на своей версии ОС.
 
· Большой сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 38814 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: metatrop, 07:55 29-11-2022
Roman_Hayretdinov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
Цитата:
На ХР создали 70000 переменных?

Да, XP SP3. Вот код, пишу по памяти:

Код:
@echo off
setlocal enabledelayedexpansion
set num=1000000000
for /R %%A in (*) do (
set #!num!=%%~tA %%A - %%~zA
set /a num+=1
)
set #>output.txt

Запустил его в папке, где было 70000 файлов (точнее, 69908). В итоге был создан файл output.txt весом почти 10 мегабайт.

Всего записей: 67 | Зарегистр. 19-12-2021 | Отправлено: 10:36 03-03-2022
ololore



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите, можно ли создать какой-то батник, чтоб он удалял из папки дубликаты файлов, оставляя только 1?
Установлен Viber Desktop, и в нем когда получаешь/пересылаешь мультимедиа по контактам - в папке Viber создаются дубликаты, равные количеству пересылок. Можно как-то автоматизировать очистку?

Всего записей: 1114 | Зарегистр. 30-05-2010 | Отправлено: 12:56 03-03-2022
GCRaistlin



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

Цитата:
The maximum size of the environment block for the process is 32,767 characters.

Практика этого не подтверждает:

Код:
 
set aaa1=<строка в 8178 символов>
set aaa2=<строка в 8178 символов>
set aaa3=<строка в 8178 символов>
set aaa4=<строка в 8178 символов>
set aaa5=<строка в 8178 символов>
set aaa6=<строка в 8178 символов>
set aaa7=<строка в 8178 символов>
set aaa8=<строка в 8178 символов>
set aaa9=<строка в 8178 символов>
>1 set    
 

Все корректно сработало (на XP).

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 13:55 03-03-2022 | Исправлено: GCRaistlin, 14:12 03-03-2022
Roman_Hayretdinov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin, Pasha_ZZZ
Вот тут нашёл информацию:

Цитата:
Максимальный общий размер всех переменных среды, включая имена переменных и знак равенства, составляет 65 536 Кбайт

Всего записей: 67 | Зарегистр. 19-12-2021 | Отправлено: 20:26 03-03-2022 | Исправлено: Roman_Hayretdinov, 20:32 03-03-2022
GCRaistlin



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

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 21:04 03-03-2022 | Исправлено: GCRaistlin, 21:04 03-03-2022
BorlandIMHO

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

Цитата:
нашёл информацию:...

Практический опыт и этой информации не подтверждает...

Код:
for /l %%A in (1,1,10000) do(
set #%%~A=000000000000000000000....000
)
1>all.txt set #

{Нулей там 8178}
XP SP3 Pro Ru на VirtualBox.
В результате выполнения скрипта (работает довольно долго ) получаем файл размером ~78Мб.
И даже отбросив имена переменных - всё равно будет "голый" размер переменных 81780000 байт (или 79863Кбайт или 77Мбайт), что несколько больше заявленных "64Мб на фсё"...
 
Возможно, данное ограничение относится к какой-то более древней ОС?..

----------
http://www.imho.ws

Всего записей: 2402 | Зарегистр. 12-10-2006 | Отправлено: 00:47 04-03-2022 | Исправлено: BorlandIMHO, 00:47 04-03-2022
fscpsd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не получается нормально запустить Скайп из командной строки.
Из проводника запускается без проблем.
А если через cmd, тогда команда:

Код:
start "" "C:\Program Files (x86)\Microsoft\Skype for Desktop\Skype.exe"

— запускает Скайп, но при этом сама команда не прекращает выполняться и висит в окне cmd таким вот образом:

Если же прервать выполнение команды, тогда закрывается и сам Скайп.
В чём тут беда может быть, интересно (ну, кроме ДНК, это само собой).
 
Другие программы нормально запускаются таким образом, к примеру, аналогичный Телеграм — просто включается и освобождает сеанс cmd, делай с ним что хочешь, а вот Скайп ни в какую.
 
Причём раньше вроде работало, вроде бы помню, что уже запускал Скайп таким образом, на другой правда системе.
Понятно, что это частная проблема Скайпа, скорее всего, но вдруг у кого-нибудь будут мысли на этот счёт.
 
 
 
Добавлено:
Так, проблема решена путём запуска вот такой вот конструкции:

Код:
start cmd /c start "" "C:\Program Files (x86)\Microsoft\Skype for Desktop\Skype.exe"

Тогда вопрос, почему оно в обычном варианте не работает, а если вот так — то работает.

Всего записей: 1824 | Зарегистр. 16-09-2010 | Отправлено: 09:07 20-03-2022 | Исправлено: fscpsd, 09:50 20-03-2022
Condar



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здраствуйте, помогите пожалуйста, задача вроде тривиальная, но я не программист.
У меня есть огромный текстовый файл больше 2GB, в нем надо заменить ввод новой cтроки Enter на пробел или Tab, но не каждый!!! то есть в первых N-строках заменить Enter на пробел, пропустить Enter и потом опять в N-строках заменить и один пропустить и т.д. до конца. То есть уменьшить кол-во строк, но не избавится от всех строк.
 
то есть N символов заменит, один пропустить, N символов заменить, один пропустить
Буду благодарен в помощи!!!

 
решение нашел тут

Всего записей: 1393 | Зарегистр. 27-01-2011 | Отправлено: 10:20 20-03-2022 | Исправлено: Condar, 13:43 20-03-2022
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Стоит задача найти программу, вызвать ее с опредленными параметрами и записать вывод в переменную
 
for /f "delims=" %i in ('where program.exe') do set program=%i
for /f "delims=" %i in ('"%program% arg1 arg2"') do set output=%i
 
Однако, если в пути к программе есть пробелы, то выводится ошибка, например  
 
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
 
Как решить проблему с пробелами в пути ? Путь к приложению заранее неизвестен.

Всего записей: 4941 | Зарегистр. 05-01-2006 | Отправлено: 22:04 20-03-2022 | Исправлено: mithridat1, 22:06 20-03-2022
GCRaistlin



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

Код:
 
setlocal enabledelayedexpansion
for /f %%A in ('""!myexefile!" (foo) "(b a r^)""') do...
 

arg1 - (foo)
arg2 - "(b a r)"

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 22:27 20-03-2022
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Спасибо, это работает
Но сразу же обнаружилась другая проблема. Вывод программы нужно отфильтровать по слову Name, если оно расположено в начале строки. Я делаю этот так
 
for /f "delims=" %%i in ('""!myexefile!" arg1 arg2 ^| findstr /R /C:"^Name""') do set output=%%i
 
но по результату вижу что фильтр не срабатывает, хотя в командной строке это работало.

Всего записей: 4941 | Зарегистр. 05-01-2006 | Отправлено: 23:13 20-03-2022
GCRaistlin



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

Код:
 
... ^^Name ...
 


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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 23:17 20-03-2022
mithridat1



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

Всего записей: 4941 | Зарегистр. 05-01-2006 | Отправлено: 23:23 20-03-2022 | Исправлено: mithridat1, 23:34 20-03-2022
GCRaistlin



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

Код:
 
for /f "delims=" %%i in ('9^>nul "!myexefile!" arg1 arg2 ^| findstr /R /C:"^Name"') do set output=%%i
 


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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 23:44 20-03-2022
Pasha_ZZZ



Запрет на пост
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
mithridat1
У findstr есть ключ /B, и необходимость регулярных выражений проходит...
А еще в цикле for ('...') если в начале вставить какую-нибудь левую команду без кавычек - то окавыченные конструкции работают без всяких delayedexpansion:
for /f %%a in ('cd.^|"..........."')

Всего записей: 12398 | Зарегистр. 11-03-2002 | Отправлено: 06:38 21-03-2022 | Исправлено: Pasha_ZZZ, 06:40 21-03-2022
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Так снова вылезает проблема с путями..
(Все таки писать batch-скрипты это особый вид извращения, настолько здесь недружелюбный, интуитивно непонятный синтаксис.)
 
Обошел проблему через опцию /B, оказалось, она тоже самое что и регэксп ^ делает
 
findstr /R /B Name
 
Pasha_ZZZ

Цитата:
 У findstr есть ключ /B, и необходимость регулярных выражений проходит...  

Спасибо, уже разобрался с этим.

Всего записей: 4941 | Зарегистр. 05-01-2006 | Отправлено: 06:55 21-03-2022 | Исправлено: mithridat1, 07:00 21-03-2022
GCRaistlin



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

Цитата:
Так снова вылезает проблема с путями..

Не вылезает - проверил.
 
Pasha_ZZZ
Они и так работают без delayed expansion, но с ним универсальнее из-за двойного окавычивания. Впрочем, с "9^>nul" оно становится ненужным.

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 09:35 21-03-2022
chivilyov

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

Всего записей: 1094 | Зарегистр. 21-02-2008 | Отправлено: 08:17 30-03-2022
Pasha_ZZZ



Запрет на пост
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
chivilyov
del /f /q *.mp4

Всего записей: 12398 | Зарегистр. 11-03-2002 | Отправлено: 08:18 30-03-2022
chivilyov

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

Всего записей: 1094 | Зарегистр. 21-02-2008 | Отправлено: 08:21 30-03-2022
Открыть новую тему     Написать ответ в эту тему

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru