CMD/BAT - [решено] рубка строки “c:\example\..\example.zip\..\ example.doc” в “c:\example\.\example.zip

Аватара пользователя
akrav

Re: CMD/BAT - [решено] рубка строки “c:\example\..\example.zip\..\ example.doc” в “c:\example\.\example.zip

Сообщение akrav »

Уважаемый, hasherfrog! Это действительно работает. Только вот если нужно будет передать программе несколько параметров, как быть?
Аватара пользователя
akrav

Re: CMD/BAT - [решено] рубка строки “c:\example\..\example.zip\..\ example.doc” в “c:\example\.\example.zip

Сообщение akrav »

Цитата akrav:



как это все работает?
CMD/BAT - [решено] рубка строки “c:\example\..\example.zip\..\ example.doc” в “c:\example\.\example.zip




параметры строки загоняем в переменные

Код:

Код: Выделить всё

@Set FilePart=%~1
@Set FileName=%~2

замена вхождений "!" на "/"

Код:

Код: Выделить всё

@Set FilePart=%FilePart:!=/%
@Set FileName=%FileName:!=/%

включаем расширенную обработку для "!"

Код:

Код: Выделить всё

@SetLocal EnableDelayedExpansion

в исходной строке удаляем все вплоть до первого вхождения ".zip", остаток сохраняем в переменной

Код:

Код: Выделить всё

@Set FileTrim=!FileName:*%FilePart%=!

удаляем полученный остаток из исходной строки - получаем то, что нужно

Код:

Код: Выделить всё

@Set FileLeft=!FileName:%FileTrim%=!

отключаем расширенную обработку для "!"

Код:

Код: Выделить всё

@SetLocal DisableDelayedExpansion

возвращаем на место "!"

Код:

Код: Выделить всё

@Echo %FileLeft:/=!%
Аватара пользователя
amel27

Re: CMD/BAT - [решено] рубка строки “c:\example\..\example.zip\..\ example.doc” в “c:\example\.\example.zip

Сообщение amel27 »

с подачи Petya V4sechkin нашел более короткий вариант без всяких преобразований:

Код:

Код: Выделить всё

@echo off
Set FilePart=%~1
Set FileName=%~2
Call Set FileTrim=%%FileName:*%FilePart%=%%
Call Set FileLeft=%%FileName:%FileTrim%=%%
Echo %FileLeft%
Ответить

Вернуться в «Скриптовые языки администрирования Windows»