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

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

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

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

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



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzz
Выложите весь код целиком. Так всё работает

Код:
@echo off
Setlocal Enabledelayedexpansion
set var=abc%%xyz
echo !var:%%=T!  

Всего записей: 573 | Зарегистр. 12-09-2017 | Отправлено: 08:45 05-01-2022 | Исправлено: Fenrizz, 12:21 05-01-2022
Death_INN

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как через команду for (а не обычным способом) удалить последний символ в значении переменной, если это символ бэкслеша \ ? Значение переменной - это какой-либо путь к каталогу, например:
с:\temp
e:\lite moon\one
d:\
Поэтому бэкслеш в конце может быть только, если значением переменной станет корневой каталог

Всего записей: 2551 | Зарегистр. 24-10-2002 | Отправлено: 15:24 07-01-2022 | Исправлено: Death_INN, 17:21 07-01-2022
Baltazar500



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет.
 
Не соображу, почему при такой конструкции

Код:
setlocal
 
if '%1'=='test' (
 
    for /F "delims=" %%a in ('echo %time%') do set TestTime=%%a
    for /F "delims=" %%a in ('echo %TestTime:~2,2%') do echo %%a
    
) else (
 
    echo %time:~3,2%
 
)
 
endlocal

 
я получаю "Непредвиденное появление: else." а при такой

Код:
 
setlocal
 
for /F "delims=" %%a in ('echo %time%') do set TestTime=%%a
 
if '%1'=='test' (
 
    for /F "delims=" %%a in ('echo %TestTime:~2,2%') do echo %%a
    
) else (
 
    echo %time:~3,2%
 
)
 
endlocal
 

всё корректно работает (по факту нужен первый вариант) ?

Всего записей: 1943 | Зарегистр. 19-09-2011 | Отправлено: 19:00 07-01-2022 | Исправлено: Baltazar500, 19:01 07-01-2022
Inoz2000



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

Всего записей: 3913 | Зарегистр. 23-04-2009 | Отправлено: 19:51 07-01-2022
Baltazar500



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000, спасибо за попытку, но не прокатидло :/ Выхлоп без @echo off

Код:
REM @echo off
 
setlocal
 
if 'test' == 'test' (for /F "delims=" %a in ('echo 3:26:13 02' ) do set TestTime %a for /F "delims=" %a in ('call echo %TestTime:~2 2%' ^) do echo %a )  else (echo 26 )
Не удается найти файл 'echo 3:26:13 02' ) do set TestTime %a for /F "delims=" %a in ('call echo %TestTime:~2 2%' ^.
 
endlocal
Обламывается на первом же for'е

Всего записей: 1943 | Зарегистр. 19-09-2011 | Отправлено: 20:28 08-01-2022 | Исправлено: Baltazar500, 20:28 08-01-2022
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Baltazar500
А зачем вы вообще вводите сущность "TestTime"?..
И непонятно зачем for и echo, если в конечном итоге результат хитровыдуманной операции получится (насколько я понимаю в командах винды) эквивалентным тупому {set TestTime=%TIME%}...
Не проще ли без накруток:
Код:
if /I "%~1"=="test" (@echo %TIME:~2,2%) else (@echo %TIME:~3,2%)


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

Всего записей: 1662 | Зарегистр. 12-10-2006 | Отправлено: 20:59 08-01-2022
Baltazar500



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO,
Цитата:
А зачем вы вообще вводите сущность "TestTime"?..  
И непонятно зачем for и echo, если в конечном итоге результат хитровыдуманной операции получится (насколько я понимаю в командах винды) эквивалентным тупому {set TestTime=%TIME%}...  
Не проще ли без накруток:
Потому, что это упрощённый вариант того, где я встал на грабли. %time% просто первое, что подвернулось под руку (в оригинале выполняется сторонний exe-к со своим выхлопом) и суть не в нём, а в желании понять, на чём спотыкается батник.Посему я и хочу заставить его работать в исходном исполнении ...

Всего записей: 1943 | Зарегистр. 19-09-2011 | Отправлено: 12:18 09-01-2022 | Исправлено: Baltazar500, 12:23 09-01-2022
Smitis



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

Цитата:
я получаю "Непредвиденное появление: else."

Конструкции в скобках рассматриваются как единый блок и к моменту раскрытия переменной TestTime она ещё не существует. Поэтому следует использовать setlocal enabledelayedexpansion и переменные заключать в !!.
 
Добавлено:
Ещё с переменными %time% и %date% есть подводный камень - вид их содержимого, внезапно, зависит от региональных настроек. Поэтому то, что работает на одной системе, опять таки внезапно может перестать работать на другой системе.

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

Всего записей: 2811 | Зарегистр. 09-02-2003 | Отправлено: 13:20 09-01-2022
BorlandIMHO

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

Код:
if /I "%~1"== "test" (call :test) else (call :notest)
pause
goto :EOF
 
:test
for /F "delims=" %%a in ('echo %time%') do set TestTime=%%a
@echo %TestTime:~2,2%
goto :EOF
 
:notest
@echo %time:~3,2%
goto :EOF

 
Или даже так:

Код:
if /I "%~1"== "test" (call :test "OutString") else (call :notest "OutString")
@echo %OutString%
pause
goto :EOF
 
:test
for /F "delims=" %%a in ('echo %time%') do set TestTime=%%a
set %~1=%TestTime:~2,2%
goto :EOF
 
:notest
set %~1= %time:~3,2%
goto :EOF


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

Всего записей: 1662 | Зарегистр. 12-10-2006 | Отправлено: 20:14 09-01-2022 | Исправлено: BorlandIMHO, 20:19 09-01-2022
Rako1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
Спросил в теме про TCIMG. Там сделали команду для TCIMG для решения этой задачи. Данный батник уже не нужен. Спасибо вам за помощь.

Всего записей: 885 | Зарегистр. 17-12-2007 | Отправлено: 22:34 12-01-2022
Roman_Hayretdinov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь знает, как в циклах FOR использовать строки расширения переменных? Для обычной переменной можно написать что-то типа %PATH:str1=str2% или %PATH:~10,5%, а как это сделать для переменной %A в цикле FOR %A IN (бла-бла-бла) DO что-то там
?

Всего записей: 58 | Зарегистр. 19-12-2021 | Отправлено: 23:36 15-01-2022
GCRaistlin



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

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

Всего записей: 3551 | Зарегистр. 18-04-2005 | Отправлено: 23:44 15-01-2022
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Roman_Hayretdinov
Сначала добавить setlocal EnableDelayedExpansion, потом присвоить значение %%A другой переменной (set AAA=%%A), а потом уже использовать её - !AAA:~10,5!
 

Код:
@echo off
Setlocal EnableDelayedExpansion
 
for /f "delims=" %%A in ('date /T') do (
set AAA=%%A
echo !AAA:.=-!)

Всего записей: 573 | Зарегистр. 12-09-2017 | Отправлено: 23:51 15-01-2022 | Исправлено: Fenrizz, 00:00 16-01-2022
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
Нельзя так: значения токенов могут содержать "!".

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

Всего записей: 3551 | Зарегистр. 18-04-2005 | Отправлено: 00:05 16-01-2022
GCRaistlin



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

Код:
 
for /f %%A in ("!foobar!")  do (
  set A=%%A
  setlocal enabledelayedexpansion || goto :eof
  echo !A:~1!
  endlocal
)
 


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

Всего записей: 3551 | Зарегистр. 18-04-2005 | Отправлено: 02:13 16-01-2022
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
тоже самое что ли делает. все режеться с любыми знаками можно выкрутится.
Подробнее...
кое что можно решить через команднуюстроку google chrome
Подробнее...

Всего записей: 3382 | Зарегистр. 29-03-2016 | Отправлено: 08:23 16-01-2022 | Исправлено: bomzz, 09:12 16-01-2022
GCRaistlin



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

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

Всего записей: 3551 | Зарегистр. 18-04-2005 | Отправлено: 11:38 16-01-2022
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
это просто примеры как я делал тоже самое резал токены и формировал #EXTINF:-1
из того что мне тут насоветовали. была проблема с длиной строки. решилась.
с консольным доступом по https. а редакционные решаются так или иначе.
некоторые шаблоны как разбивать строки нестандартно. выбирать больший поток.
адреса переадресации. кодировка.

Всего записей: 3382 | Зарегистр. 29-03-2016 | Отправлено: 12:03 16-01-2022 | Исправлено: bomzz, 12:12 16-01-2022
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzz
Речь шла о том, что до входа в цикл в общем случае включать delayed expansion нельзя. И показано, как сделать правильно.

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

Всего записей: 3551 | Зарегистр. 18-04-2005 | Отправлено: 12:17 16-01-2022
bomzz

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

Всего записей: 3382 | Зарегистр. 29-03-2016 | Отправлено: 12:21 16-01-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

Компьютерный форум 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

Рейтинг.ru