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
Уважаемый, hasherfrog! Это действительно работает. Только вот если нужно будет передать программе несколько параметров, как быть?
-
akrav
Re: CMD/BAT - [решено] рубка строки “c:\example\..\example.zip\..\ example.doc” в “c:\example\.\example.zip
Цитата akrav:
как это все работает?
параметры строки загоняем в переменные
Код:
замена вхождений "!" на "/"
Код:
включаем расширенную обработку для "!"
Код:
в исходной строке удаляем все вплоть до первого вхождения ".zip", остаток сохраняем в переменной
Код:
удаляем полученный остаток из исходной строки - получаем то, что нужно
Код:
отключаем расширенную обработку для "!"
Код:
возвращаем на место "!"
Код:
как это все работает?
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
с подачи Petya V4sechkin нашел более короткий вариант без всяких преобразований:
Код:
Код:
Код: Выделить всё
@echo off
Set FilePart=%~1
Set FileName=%~2
Call Set FileTrim=%%FileName:*%FilePart%=%%
Call Set FileLeft=%%FileName:%FileTrim%=%%
Echo %FileLeft%