Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] рубка строки “c:\example\..\example.zip\..\ example.doc” в “c:\example\.\example.zip

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

Пользователь


Сообщения: 58
Благодарности: 1

Профиль | Отправить PM | Цитировать


Есть такая переменная = “c:\example\...\example.zip\...\ example.doc” Нужно обрубить строку при первом появлении имени архивного файла, имя которого может быть производным.

Отправлено: 12:50, 14-01-2008

 

Пользователь


Сообщения: 58
Благодарности: 1

Профиль | Отправить PM | Цитировать


amel27, не могли бы Вы пояснить как это все работает?

Отправлено: 09:29, 05-02-2008 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата akrav:
как это все работает? »
параметры строки загоняем в переменные
Код: Выделить весь код
@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:/=!%
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:29, 05-02-2008 | #12


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


с подачи Petya V4sechkin нашел более короткий вариант без всяких преобразований:
Код: Выделить весь код
@echo off

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

Call Set FileTrim=%%FileName:*%FilePart%=%%
Call Set FileLeft=%%FileName:%FileTrim%=%%

Echo %FileLeft%

Отправлено: 10:28, 08-02-2008 | #13



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] рубка строки “c:\example\..\example.zip\..\ example.doc” в “c:\example\.\example.zip

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Архиваторы - [решено] [addon] 7-Zip 9.20 Final / 9.22 beta / 9.28 alpha dimadr Наборы обновлений для Windows XP/2003/Windows 7 488 13-06-2012 13:33
[решено] Вирус зашифровал doc,xls,rar,zip,jpeg,jpg,psd gamber Лечение систем от вредоносных программ 3 05-11-2009 16:49
CMD/BAT - [решено] cmd, добавить в zip папку robingut Скриптовые языки администрирования Windows 9 18-05-2009 13:25
[решено] Архивация профиля Thunderbird программой 7-zip 4.65 SeRGi-uS AutoIt 10 18-05-2009 10:51
CMD/BAT - [решено] замена set str2=%str1:.zip/=.zip/!% глючит на пробелах?! akrav Скриптовые языки администрирования Windows 5 12-02-2008 11:54




 
Переход