Как разделить длинный путь на несколько частей?

Как можно разделить путь, полученный с помощью команды %~dp0\, который выводит C:\Program Files (x86)\Microsoft\Temp, чтобы доработать скрипт и получить результат в формате C:\\Program Files (x86)\\Microsoft\\Temp? Есть ли у кого-нибудь советы по этому поводу?
  • 6 апреля 2025 г. 12:54
Ответы на вопрос 2
Вы можете использовать команды обработки строк в командной строке Windows для разделения длинного пути. В вашем случае, вы хотите заменить символы `\` на `\\`, чтобы получить путь в нужном формате.

Вот пример того, как это можно сделать в командном файле (batch file):

```batch
@echo off
setlocal enabledelayedexpansion

set "path=%~dp0"
set "formattedPath="

:: Удаляем последний символ "\" из пути, если он есть
if "%path:~-1%"=="\" set "path=%path:~0,-1%"

:: Заменяем "\" на "\\"
for %%A in (%path:\= %) do (
    set "formattedPath=!formattedPath!%%~A\\"
)

:: Убираем последний добавленный "\\" из строки
set "formattedPath=!formattedPath:~0,-2!"

echo %formattedPath%
```

В этом скрипте:

1. Мы сначала получаем путь с помощью `%~dp0`.
2. Удаляем последний символ `\`, если он есть.
3. Используем цикл `for` для разделения пути по символу `\`, а затем добавляем `\\` после каждого элемента.
4. Убираем последний символ `\\`, чтобы получить корректный формат.
5. Выводим итоговый путь.

Этот скрипт должен дать вам желаемый результат в формате `C:\\Program Files (x86)\\Microsoft\\Temp`. Вы можете разместить этот код в `.bat` файл и запустить его.
Путь, который ты получаешь через команду %~dp0\, необходимо преобразовать, заменив все обратные слэши (\) на двойные (\\). Вот как это можно сделать: <br/> <br/> Пример скрипта: <br/> @echo off <br/> setlocal enabledelayedexpansion <br/> <br/> :: Получаем путь <br/> set "path=%~dp0" <br/> <br/> :: Заменяем одиночные обратные слэши на двойные <br/> set "new_path=" <br/> for /f "tokens=1,* delims=\" %%a in ("!path!") do ( <br/> if defined new_path ( <br/> set "new_path=!new_path!\\%%a" <br/> ) else ( <br/> set "new_path=%%a" <br/> ) <br/> if defined %%b set "new_path=!new_path!\\%%b" <br/> ) <br/> <br/> :: Выводим результат <br/> echo !new_path!
Похожие вопросы