Войти

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


a1ek9
27-11-2024, 14:53
Доброго вечера! Подскажите пожалуйста как решить вопрос с двойным слешем в пути:
@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
если указать корень диска »
Указать где?

a1ek9
27-11-2024, 15:31
Указать где? »
при запуске появляется окно выбора директории.. если указать корень диска будет двойной слеш, если путь до папки на диске, слеш будет нормальным.

NickM
27-11-2024, 16:07
если указать корень диска будет двойной слеш, если путь до папки на диске, слеш будет нормальным. »
По той причине, что пути, например:
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
По той причине, что пути, например: »
Но по факту существует ведь)
Как вариант проверяйте последний символ, и в зависимости от условия присваивайте переменной нужное значение: »
Благодарочка :up

NickM
27-11-2024, 16:39
Но по факту существует ведь) »
D: - это, назовём словом диск, а D:\ - это путь (корневой каталог) на диске D.

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




© OSzone.net 2001-2012