рубка строки “c:\example\..\example.zip\..\ example.doc” в “c:\example\.\example.zip
Есть такая переменная = “c:\example\...\example.zip\...\ example.doc” Нужно обрубить строку при первом появлении имени архивного файла, имя которого может быть производным.
|
akrav, язык какой?
|
желательно стандартными возможностями пакетных файлов win xp
|
Код:
@if "%1"=="" goto usage Код:
C:\Temp>stripname c:\123123.123123\123.zip\\123.12312.3\123\123\123.doc |
Спасибо большое! Все работает замечательно, раньше я использовал call только для вызова процедур, совсем забыв про возможности windows nt. Остался только один вопрос по этой теме. Что означает звездочка(*) в выражении:
Цитата:
|
ничего не понимаю, но наличие пробелов в исходной строке работают таке как и .zip. Т.е. в случае "c:\program files\expl\test.zip\test.doc" результат будет "c:\program", а не "c:\program files\expl\test.zip"
|
Появилась идея, а что если после .zip/ вставить стоп символ или комбинацию, а потом эту строку разбить в цикле разделителем = стоп символу. Но пока это все что-то не фурычит…
|
Используйте такой код:
Код:
@rem @set filename=c:\qweqweqwe\qweqweqwe\qweqweqwe\qweqwe.zip\fsdfsd\qweqweqw\r.doc |
хм, имхо можно короче (если я правильно понял задачу):
Код:
@Set FilePart=%~1 Код:
script.cmd ".zip" "c:\qweqweqwe\qweqweqwe\qweqweqwe\qweqwe.zip\fsdfsd\qweqweqw\r.doc" |
Уважаемый, hasherfrog! Это действительно работает. Только вот если нужно будет передать программе несколько параметров, как быть?
|
amel27, не могли бы Вы пояснить как это все работает?
|
Цитата:
Код:
@Set FilePart=%~1 Код:
@Set FilePart=%FilePart:!=/% Код:
@SetLocal EnableDelayedExpansion Код:
@Set FileTrim=!FileName:*%FilePart%=! Код:
@Set FileLeft=!FileName:%FileTrim%=! Код:
@SetLocal DisableDelayedExpansion Код:
@Echo %FileLeft:/=!% |
с подачи Petya V4sechkin нашел более короткий вариант без всяких преобразований:
Код:
@echo off |
Время: 22:00. |
Время: 22:00.
© OSzone.net 2001-