К основному контенту

Командная строка Windows. Работа с переменными

Вывод отдельных символов из значения переменной.
Сама конструкция имеет вид:
%var:~№_символа[,кол-во]%
"~" - расширение переменной.
№_символа - с какого символа начать вывод. Нумерация начинается с нуля.
кол-во - сколько символов вывести.Если не указано, то выводятся весь остаток начиная с указанного символа.
Если оба значения (длина и число пропускаемых символов) отрицательны, следующим используемым значением будет длина значения переменной среды, добавленной к указанному значению пропуска или указанной длины.
@echo off
set A=12345
    ::задаем значение переменной A
echo %A:~0,1%
    ::вывод ПЕРВОГО СИМВОЛА из значения переменной
echo %A:~-1,1%
    ::вывод ПОСЛЕДНЕГО СИМВОЛА из значения
echo %A:~-3%
    ::вывод ТРЁХ ПОСЛЕДНИХ символов
echo %A:~0,3%
    ::вывод ТРЁХ ПЕРВЫХ символов
echo %A:~1%
    ::вывод значения БЕЗ ПЕРВОГО символа
%PATH:~-10%
    ::извлечет последние 10 символов переменной PATH.
%PATH:~0,-2%
    ::извлечет все символы переменной PATH, за исключением 2-х последних.
Подстановка (Регулярные выражения).
Используется для замены определённых символов (или групп символов) другим значением.
Конструкция:
%var:str=нов.значение%
пример:
SET B=1\2\3\4\5
    ::задание значения переменной
ECHO %B:\=//%
    ::вывод строки "прошедшей цензуру"
SET B=%B:\=//%
    ::обновление самой переменной с заменой "\" на "//"
ECHO %B%
Обработке подлежит любое удовлетворяющее вхождение строки, независимо от регистра символов.
Заменяемое значение "str" может начинаться со звездочки, и в этом случае это будет соответствовать любому началу строки до первого вхождения оставшейся части "str".
Пример:
set var=12345
set var=%var:*5=какие-то числа перед цифрой 5%
echo %var%
Спасибо первоисточнику

Комментарии

Популярные сообщения из этого блога

Как с помощью bat-файла удалить последний символ в каждой строке текстового файла

@Echo Off SetLocal EnableDelayedExpansion Set file=e:\Temp1\temp.txt Set newfile=e:\Temp1\newtemp.txt (For /F "tokens=* usebackq delims=" %%a In ("%file%") Do (   Set ta=%%a   Echo !ta:~0,-1! ))>"%newfile%" Нагло стырено с просторов Интернет

OpenOffice. Calc. Символ «'» перед числом

Постоянно забываю как убрать принудительное текстовое форматирование в таблицах OpenOffice, поэтому просто копирую эту статью из базы знаний: Символ «'» (апостроф) Если перед числами в строке ввода стоит символ «'», то в этом случае цифры не распознаются как числа. Символ «'» (апостроф) является символом принудительного форматирования данных «как текст», поэтому он не отображается в ячейках; увидеть его можно только в строке ввода перед данными. «Язык формул» электронных таблиц разработан задолго до появления MS Windows и Microsoft Office. Символ «апостроф» в начале содержимого ячейки всегда был символом принудительного форматирования содержимого «как текст». Данный способ форматирования является преимущественным перед форматом ячейки. Так работали Quatro Pro, Super Calc, таблицы Lotus 1-2-3. Так работают и все современные электронные таблицы. «'» перед цифровыми значениями следует использовать, когда вводятся константы, не являющиеся числами. Например

Пример bat-файла для удаления файлов на ftp по заранее определенной маске

@echo off SetLocal EnableDelayedExpansion rem Определяем переменные SET CONF=ftp.cnf SET FILELIST=f.txt SET HOST=ftp.host.lan SET USERNAME=ftpuser SET PASSWORD=PaS$w0Rd rem  Создаем файл конфигурации для автоматизации работы ftp-клиента rem в котором сканируем файлы по маске с учетом регистра echo.open %HOST%> %CONF% echo.%USERNAME%>> %CONF% echo.%PASSWORD%>> %CONF% echo.binary>> %CONF% echo.ls *_IN.zip>> %CONF% echo.ls *_IN.ZIP>> %CONF% echo.ls *_in.zip>> %CONF% echo.ls *_in.ZIP>> %CONF% echo.bye>> %CONF% rem Запускаем ftp-клиент в автоматическом режиме, rem выводим результаты просмотра каталога в текстовый файл, rem  фильтруя выводимые имена файлов ftp -s:%CONF% | findstr /i "[a-z,_,0-9]_IN.zip" > %FILELIST% rem Вторично создаем файл конфигурации echo.open %HOST%> %CONF% echo.%USERNAME%>> %CONF% echo.%PASSWORD%>> %CONF% echo.binary>>%CONF% rem Записываем в конфигу