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

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

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

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

Всего записей: 38029 | Зарегистр. 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 мегабайт.

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



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

Всего записей: 779 | Зарегистр. 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

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



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

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

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



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

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

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

Advanced 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

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



Full 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"

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

Всего записей: 585 | Зарегистр. 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 символов заменить, один пропустить
Буду благодарен в помощи!!!

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

Всего записей: 1384 | Зарегистр. 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.
 
Как решить проблему с пробелами в пути ? Путь к приложению заранее неизвестен.

Всего записей: 4640 | Зарегистр. 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

Всего записей: 3483 | Зарегистр. 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
 
но по результату вижу что фильтр не срабатывает, хотя в командной строке это работало.

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



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

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


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

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



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

Всего записей: 4640 | Зарегистр. 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

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



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

Всего записей: 10881 | Зарегистр. 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, и необходимость регулярных выражений проходит...  

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

Всего записей: 4640 | Зарегистр. 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

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

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

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



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

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

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

Всего записей: 1067 | Зарегистр. 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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru