|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум 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 |
Есть такая переменная = “c:\example\...\example.zip\...\ example.doc” Нужно обрубить строку при первом появлении имени архивного файла, имя которого может быть производным.
|
|
|
Отправлено: 12:50, 14-01-2008 |
|
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать akrav, язык какой?
|
|
Отправлено: 18:24, 14-01-2008 | #2 |
|
Пользователь Сообщения: 58
|
Профиль | Отправить PM | Цитировать желательно стандартными возможностями пакетных файлов win xp
|
|
Отправлено: 22:50, 14-01-2008 | #3 |
|
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать @if "%1"=="" goto usage
@set filename=%1
@set findpath=
@set ok=
@goto start
:sub3
@if "%findpath%"=="" goto first
@set findpath=%findpath%\%1
@goto next
:first
@set findpath=%1
:next
@echo %1 | find ".zip" >nul
@if "%errorlevel%"=="0" goto fook
@goto :EOF
:fook
@set ok=ok
@goto :EOF
:sub2
@FOR /F %1 %%i in ("%filename%") do @call :sub3 %%i
@goto :EOF
:sub
@if "%ok%"=="ok" @goto :EOF
@set v="eol=; tokens=%1* delims=\"
@call :sub2 %v%
@goto :EOF
:start
@FOR /L %%z IN (1,1,10) DO @call :sub %%z
@echo %findpath%
@goto :EOF
:usage
@echo Usage: stripname.bat filename\...\filename.zip\filename\...
|
|
Отправлено: 14:43, 15-01-2008 | #4 |
|
Пользователь Сообщения: 58
|
Профиль | Отправить PM | Цитировать Спасибо большое! Все работает замечательно, раньше я использовал call только для вызова процедур, совсем забыв про возможности windows nt. Остался только один вопрос по этой теме. Что означает звездочка(*) в выражении:
Цитата hasherfrog:
|
||
|
Отправлено: 11:03, 16-01-2008 | #5 |
|
Пользователь Сообщения: 58
|
Профиль | Отправить PM | Цитировать ничего не понимаю, но наличие пробелов в исходной строке работают таке как и .zip. Т.е. в случае "c:\program files\expl\test.zip\test.doc" результат будет "c:\program", а не "c:\program files\expl\test.zip"
|
|
Отправлено: 15:42, 29-01-2008 | #6 |
|
Пользователь Сообщения: 58
|
Профиль | Отправить PM | Цитировать Появилась идея, а что если после .zip/ вставить стоп символ или комбинацию, а потом эту строку разбить в цикле разделителем = стоп символу. Но пока это все что-то не фурычит…
|
|
Отправлено: 16:52, 30-01-2008 | #7 |
|
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Используйте такой код:
@rem @set filename=c:\qweqweqwe\qweqweqwe\qweqweqwe\qweqwe.zip\fsdfsd\qweqweqw\r.doc
@if "%*"=="" goto usage
@set filename=%*
@set findpath=
@set ok=
@goto start
:sub3
@if "%findpath%"=="" goto first
@set findpath=%findpath%\%*
@goto next
:first
@set findpath=%*
:next
@echo %* | find ".zip" >nul
@if "%errorlevel%"=="0" goto fook
@goto :EOF
:fook
@set ok=ok
@goto :EOF
:sub2
@FOR /F %1 %%i in ("%filename%") do @call :sub3 %%i
@goto :EOF
:sub
@if "%ok%"=="ok" @goto :EOF
@set v="eol=; tokens=%1* delims=\"
@call :sub2 %v%
@goto :EOF
:start
@FOR /L %%z IN (1,1,20) DO @call :sub %%z
@if "%ok%"=="ok" @goto heyho
@echo Pattern ".zip" is not found.
@goto :EOF
:heyho
@echo %findpath%
@goto :EOF
:usage
@echo Usage: stripname.bat filename\...\filename.zip\filename\...
|
|
Отправлено: 13:13, 31-01-2008 | #8 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать хм, имхо можно короче (если я правильно понял задачу):
@Set FilePart=%~1 @Set FileName=%~2 @Set FilePart=%FilePart:!=/% @Set FileName=%FileName:!=/% @SetLocal EnableDelayedExpansion @Set FileTrim=!FileName:*%FilePart%=! @Set FileLeft=!FileName:%FileTrim%=! @SetLocal DisableDelayedExpansion @Echo %FileLeft:/=!% |
|
Отправлено: 15:59, 02-02-2008 | #9 |
|
Пользователь Сообщения: 58
|
Профиль | Отправить PM | Цитировать Уважаемый, hasherfrog! Это действительно работает. Только вот если нужно будет передать программе несколько параметров, как быть?
|
|
Отправлено: 21:02, 04-02-2008 | #10 |
|
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Архиваторы - [решено] [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 | |
|