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

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

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

Maz



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

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ 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

Всего записей: 39605 | Зарегистр. 26-02-2002 | Отправлено: 22:41 20-06-2024 | Исправлено: Maz, 21:52 28-09-2024
Darth_Max

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

Всего записей: 1233 | Зарегистр. 02-10-2014 | Отправлено: 14:51 01-06-2025
BorlandIMHO

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

Цитата:
Как узнать букву сетевого диска, который был назначен самым новым, последним?

В именно такой постановке вопроса - никак. Разве что спросить у того, кто подключал...

Всего записей: 3047 | Зарегистр. 12-10-2006 | Отправлено: 18:29 01-06-2025
Darth_Max

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

Цитата:
В именно такой постановке вопроса - никак. Разве что спросить у того, кто подключал...

Я использую команду pushd. Если два раза запустить bat-файл без перезагрузки компьютера, будет назначена другая буква для сетевого диска.
Мне нужно проверить, одинаковая ли буква.

Всего записей: 1233 | Зарегистр. 02-10-2014 | Отправлено: 20:36 01-06-2025
BorlandIMHO

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Darth_Max
Подсказываю: сразу после pushd в переменную "CD" попадает полный текущий путь, включая имя диска. Его можно сравнить с предыдущим значением, если таковое предварительно сохранено в файл. А также сохранить в файл.

Цитата:
Если два раза запустить bat-файл без перезагрузки компьютера, будет назначена другая буква для сетевого диска.

А всё потому, что вы не используете пАрную для pushd команду popd (которая, в том числе, отключает сетевой диск, подключённый pushd)...

Всего записей: 3047 | Зарегистр. 12-10-2006 | Отправлено: 22:42 01-06-2025
cl85

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

Код:
set choice=
set /p choice="Введите цифру нужного варианта: "

Подскажите пожалуйста, как можно добавить пробелы?
"(В это место)Введите цифру нужного варианта: "
Обычные пробелы ничего не дают.
Спасибо.

Всего записей: 417 | Зарегистр. 26-10-2005 | Отправлено: 17:56 02-06-2025
Simple Code



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

Код:
 
set /p choice="      Введите цифру нужного варианта: "
 

Или так:

Код:
 
for /F %%a in ('echo prompt $H ^| cmd') do set BS=%%a
set /p choice="%BS%      Введите цифру нужного варианта: "
 

Всего записей: 302 | Зарегистр. 19-11-2022 | Отправлено: 12:28 03-06-2025
cl85

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Simple Code
Превосходно.
Спасибо.
Спец символ вообще отлично.

Всего записей: 417 | Зарегистр. 26-10-2005 | Отправлено: 16:45 03-06-2025
LZAA

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

     Я выполняю пакетную команду:
 
    команда1 | команда2 | итд
 
    В результате в 'stdout' выводится некий текст - 'yyy'. Мне надо этот текст изменить - 'xxxyyy'. Изменённый текст тоже должен быть в 'stdout'. Можно ли это сделать и как?

Всего записей: 2582 | Зарегистр. 09-01-2010 | Отправлено: 11:00 10-06-2025
los

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

Цитата:
В результате в 'stdout' выводится некий текст - 'yyy'. Мне надо этот текст изменить - 'xxxyyy'. Изменённый текст тоже должен быть в 'stdout'. Можно ли это сделать и как?

 
один из вариантов использовать sed:
 
echo yyy | sed 's/^/xxx/g'
xxxyyy
 
т.е.
команда1 | команда2 | итд | sed ...

Всего записей: 7941 | Зарегистр. 08-09-2001 | Отправлено: 11:23 10-06-2025
GCRaistlin



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

Код:
 
for /f delims^= %%A in ('echo yyy') do echo xxx%%A
 


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

Всего записей: 4368 | Зарегистр. 18-04-2005 | Отправлено: 11:29 10-06-2025
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
                                 GCRaistlin
 
     Я так понимаю, что для использования этого кода надо вручную прописывать значение 'yyy'. Но мне надо, чтобы значение 'yyy' бралось из 'stdout' без участия пользователя.

Всего записей: 2582 | Зарегистр. 09-01-2010 | Отправлено: 13:27 10-06-2025
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA
Это просто пример команды вывода в stdout.

Код:
 
for /f delims^= %%A in ('команда1 ^| команда2 ^| итд') do echo xxx%%A
 


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

Всего записей: 4368 | Зарегистр. 18-04-2005 | Отправлено: 13:37 10-06-2025
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я выполняю в 'cmd':
 
     for /f delims^= %A in ('команда1 ^| команда2 ^| итд') do echo xxx%A
 
     В командах, которые в скобках, используются некие исполняемые файлы, записанные в 'Path', но при исполнении этого кода система их не находит - 'The system cannot find the file xx'.
     Если в коде записать пути к исполняемым файлам, то при выполнении кода 'cmd' пишет - 'More?
     Что-то тут не то.

Всего записей: 2582 | Зарегистр. 09-01-2010 | Отправлено: 14:29 10-06-2025 | Исправлено: LZAA, 14:29 10-06-2025
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA
Напишите, что именно вы выполняете.

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

Всего записей: 4368 | Зарегистр. 18-04-2005 | Отправлено: 14:36 10-06-2025
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
                                    los
      Если я выполняю (в Windows OS):
 
      команда1 | команда2 | итд | sed s/^/xxx/g
 
     то получаю такой результат:
 
     sed: -e expression #1, char 0: no previous regular expression
 
     Чего-то ему 'не хватает'.
 
 
Добавлено:
                            GCRaistlin
     Команда:
 
     for /f delims^= %A in ("D:\Program Files\Curl\curl.exe" -s -X post -H "Authorization: Basic eGRybWtleTpYSHR2QHRtc1BAc3N3MHJk" "https://drmv2.hplus.com.vn/api/token" ^| "D:\Program Files (x86)\Gow\bin\jq.exe -Mr .Token) do echo https://1011154949.vnns.net/CDN-FPT/HTVC-GIADINH-HD-ABR/HTV-ABR/HTVC-GIADINH-HD-1080p/chunks.m3u8?XSignKey=%A

Всего записей: 2582 | Зарегистр. 09-01-2010 | Отправлено: 14:46 10-06-2025
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA
Вы невнимательно прочли мой пост. Обратите внимание на то, что у меня внутри скобок.
 
Добавлено:
Если первая команда должна быть в кавычках, добавьте перед ней "9^>nul":

Код:
 
('9^>nul "D:\...
 


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

Всего записей: 4368 | Зарегистр. 18-04-2005 | Отправлено: 14:58 10-06-2025 | Исправлено: GCRaistlin, 15:00 10-06-2025
los

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

Цитата:
Чего-то ему 'не хватает'.

кавычек
sed "s/^/xxx/g"

Всего записей: 7941 | Зарегистр. 08-09-2001 | Отправлено: 15:09 10-06-2025
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 
                               GCRaistlin
 
     Извиняюсь - кавычки пропустил. Команда с одинарными кавычками работает и без путей к исполняемым файлам. Спасибо за помощь.
 
                               los
 
     Да, с кавычками работает. Но есть нюансы.
     Например, простой текст 'xxx' добавляет. А вот результат для сложного текста:
 
curl -s -X post -H "Authorization: Basic eGRybWtleTpYSHR2QHRtc1BAc3N3MHJk" "https://drmv2.hplus.com.vn/api/token" | jq -Mr .Token | sed "s/^/https://1011154949.vnns.net/CDN-FPT/HTVC-GIADINH-HD-ABR/HTV-ABR/HTVC-GIADINH-HD-1080p/chunks.m3u8?XSignKey=/g"
sed: -e expression #1, char 12: unknown option to `s'
jq: error: writing output failed: Invalid argument
 
    Можно ли сделать команду 'sed' 'на все случаи жизни'?
 
     PS.
 
     'Методом тыка' определил, что 'sed' о '/' 'спотыкается. Если этот значок в тексте не использовать, то работает без ошибки. Можно ли преодолеть это затруднение?

Всего записей: 2582 | Зарегистр. 09-01-2010 | Отправлено: 15:15 10-06-2025 | Исправлено: LZAA, 22:14 10-06-2025
LZAA

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

                              GCRaistlin
 
       Обнаружилось одно неприятное обстоятельство.  
       Текст, конечно, редактируется правильно, но на выходе в конце текста получается пробел (space). И дело тут не в редактировании. Если сделать совсем просто:
 
    for /f delims^= %A in ('команда1 ^| команда2 ^| итд') do echo %A  
 
   то к исходному тексту прибавляется пробел в конце. Можно ли сделать код, который не будет создавать пробел?

Всего записей: 2582 | Зарегистр. 09-01-2010 | Отправлено: 01:42 12-06-2025
Jonmey

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

Цитата:
Можно ли сделать код, который не будет создавать пробел?


Код:
... do echo|set /P =%A

Всего записей: 1406 | Зарегистр. 17-01-2011 | Отправлено: 04:10 12-06-2025
Открыть новую тему     Написать ответ в эту тему

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru