Я хотел бы разделить значение каталога, хранящегося в переменной.

Например, если я назначу путь к каталогу (с двойными кавычками)

«C:\Program Files\TeamViewer\TeamViewer.exe» переменной a. Я хотел бы разделить последнюю часть переменной TeamViewer.exe на одну переменную b и что-либо еще до c.

Для заметки

  • Значение, которое я назначаю c, может варьироваться в зависимости от расположения выбранного файла.
  • Путь к каталогу не предопределен, я сделаю его определяемым пользователем.

2 ответа2

1

Будучи переменной с указанием полного пути, вы можете сделать это:

@echo off
Set a="C:\Program Files\TeamViewer\TeamViewer.exe" 
For %%A in ("%a%") do (
    Set c=%%~dpA
    Set b=%%~nxA
)
echo.Folder is: %c%
echo.Name is: %b%

Ответ с помощью этого https://stackoverflow.com/questions/3667026/meaning-of-dpa

1

Спасибо за вашу поддержку. Я использовал вашу идею удаления кавычек, но не в строке Set a="C:\Program Files\TeamViewer\TeamViewer.exe" а в следующей строке For %%A in ("%a%") do ( и это дает мне результат я ожидал. Я изменяюсь в следующей строке, потому что, как я уже сказал, путь, который я получаю, определяется пользователем, и путь идет по умолчанию с кавычками, и я не могу избежать кавычек в предыдущей строке.

Окончательный пример кода приведен ниже, и он работает как шарм. Спасибо!!

@echo off
Set a="C:\Program Files\TeamViewer\TeamViewer.exe" 
For %%A in (%a%) do (
    Set c=%%~dpA
    Set b=%%~nxA
)
echo.Folder is: %c%
echo.Name is: %b%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .