Войти

Показать полную графическую версию : [решено] Помогите определить относительный путь до папки!


azot111
10-03-2013, 08:41
Всем привет! Есть один вопрос!

Как можно средствами CMD найти папку test1 и вычислить её абсолютный путь, затем подставить его в данный команду?

(Также известно что папка test1 лежит в папке test "test/test1" )

7za.exe x -yo"суда подставляем абсолютный путь/ test1" "_tmp\tets.7z"

Если это возможно! Заранее спасибо!

Iska
10-03-2013, 10:03
azot111, а как Вы без программирования определяете? Как поступаете, если искомых папок оказалось несколько?

Что вообще известно о папке? Из примера не очень ясно, на что ориентироваться: то ли только на имя «нужная папка», то ли на относительный путь «test\нужная папка».

azot111
10-03-2013, 10:25
Прошу извинения чёт я впарился! Переписал вопрос теперь всё верно!

Iska
10-03-2013, 10:47
azot111, расставьте, пожалуйста, в сообщении знаки препинания. Для придания ему смысла.

megaloman
10-03-2013, 12:53
@Echo Off
cls

Set What=\Папка 1\Папка 2\.

SetLocal EnableExtensions EnableDelayedExpansion

For %%d In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do Call :Action %%d:\
GoTo :Eof

:Action
If Not Exist %1 GoTo :Eof
Echo %1

FOR /R %1 %%p IN (.) DO (
Set Tpath=%%p
If NOT "!Tpath:%What%=!"=="%%p" (
Set TPath=!TPath:~0,-1!
Echo !TPath!
)
)
При задании искомой цепочки имён папок обратите внимание на то, что в батнике в конце цепочки необходимо поставить точку. Вместо
Echo !TPath!
Вы вольны поставить свою команду, например, вызов упаковщика.
В переменной !TPath! содержится искомый путь.
Если в задаваемых именах имеются русские буквы, батник должен быть записан в 866 (DOS) кодировке
Вы не ответили на вопрос IskaКак поступаете, если искомых папок оказалось несколько?

azot111
10-03-2013, 13:02
megaloman Спасибо большое!Сори за то что я тут раз 100 переписал вопрос!

Как поступаете, если искомых папок оказалось несколько?
Эти две папки уникальны

megaloman
10-03-2013, 13:40
Если папку надо найти один раз (Эти две папки уникальны), то, чтобы не искать зря на других дисках @Echo Off
cls

Set What=\Папка 1\Папка 2\.

SetLocal EnableExtensions EnableDelayedExpansion

Set L=0
For %%d In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do If !L! EQU 0 Call :Action %%d:\
GoTo :Eof

:Action
If Not Exist %1 GoTo :Eof
Echo %1

FOR /R %1 %%p IN (.) DO (
Set Tpath=%%p
If NOT "!Tpath:%What%=!"=="%%p" (
Set TPath=!TPath:~0,-1!
Set L=1
Echo !TPath!
)
)




© OSzone.net 2001-2012