Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Как решить вопрос с двойным слешем в пути (http://forum.oszone.net/showthread.php?t=355915)

a1ek9 27-11-2024 14:53 3033616

Как решить вопрос с двойным слешем в пути
 
Доброго вечера! Подскажите пожалуйста как решить вопрос с двойным слешем в пути:
Код:

@echo off
Set "b="(new-object -COM 'Shell.Application').BrowseForFolder(0,'%1',0x200,0).self.path""
For /f "usebackq delims=" %%# in (`PowerShell %b%`) do set "Folder=%%#"
If "%Folder%"=="" (Goto Choice & Exit)
@echo %Folder%
set "FolderEnd=%Folder%\folder1"
@echo %FolderEnd%
pause

Кратко изложу суть, если указать корень диска, путь будет D:\\, а если к примеру D:\FolderTest то путь будет правильный без двойного \. Как можно решить этот вопрос?

NickM 27-11-2024 15:10 3033617

Цитата:

Цитата a1ek9
если указать корень диска »

Указать где?

a1ek9 27-11-2024 15:31 3033618

Цитата:

Цитата NickM
Указать где? »

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

NickM 27-11-2024 16:07 3033619

Цитата:

Цитата a1ek9
если указать корень диска будет двойной слеш, если путь до папки на диске, слеш будет нормальным. »

По той причине, что пути, например:
Код:

D:
, не существует.

Как вариант проверяйте последний символ, и в зависимости от условия присваивайте переменной нужное значение:
Код:

@echo off
Set "b="(new-object -COM 'Shell.Application').BrowseForFolder(0,'%1',0x200,0).self.path""
For /f "usebackq delims=" %%# in (`PowerShell %b%`) do set "Folder=%%#"
If "%Folder%"=="" (Goto Choice & Exit)
@echo %Folder%
set "FolderEnd=%Folder%\folder1"
If "%Folder:~-1%" EQU "\" set "FolderEnd=%Folder%folder1"
@echo %FolderEnd%
pause


a1ek9 27-11-2024 16:31 3033621

Цитата:

Цитата NickM
По той причине, что пути, например: »

Но по факту существует ведь)
Цитата:

Цитата NickM
Как вариант проверяйте последний символ, и в зависимости от условия присваивайте переменной нужное значение: »

Благодарочка :up

NickM 27-11-2024 16:39 3033622

Цитата:

Цитата a1ek9
Но по факту существует ведь) »

D: - это, назовём словом диск, а D:\ - это путь (корневой каталог) на диске D.

Цитата:

SYSTEMDRIVE
Диск, на котором хранится папка Windows. Это значение является именем диска, а не именем папки (C: не C:\).


Время: 06:22.

Время: 06:22.
© OSzone.net 2001-