Как использовать модификаторы пакетных параметров для переменной, а не для параметра - PullRequest
7 голосов
/ 08 марта 2011

Синтаксис% ~ f1 изменяет параметр, представляющий имя файла, в его полный путь. Есть ли способ получить эту функциональность для переменных, определенных в пакетном скрипте, а не только для значений параметров?

Например, если пользователь предоставляет параметр командной строки «test.txt», работает следующий скрипт:
echo Квалифицированное имя файла:% ~ f1

Но если я попытаюсь сделать то же самое с переменной вместо параметра, как я могу получить такую ​​же функциональность? Эта попытка неверного синтаксиса и не работает:
set unqualifiedFilename = "test.txt"
echo Квалифицированное имя файла:% ~ funqualifiedFilename

Ответы [ 2 ]

4 голосов
/ 08 марта 2011

Второй способ - вызвать функцию и использовать параметр% 1 ...% n

@echo off
set FileName=test.cmd
call :GetFullPath %FileName%

echo Original param was '%FileName%'; full path is '%FullPath%'
goto :eof

:GetFullPath
set "FullPath=%~f1"
goto :eof
4 голосов
/ 08 марта 2011

Самый простой способ, который я могу придумать, это просто использовать команду FOR.

Пример пакетного сценария:

@echo off
setlocal
set FileName=test.cmd

for %%i in (%FileName%) do set FullPath=%%~fi

echo Original param was '%FileName%'; full path is '%FullPath%'

Пример вывода:

Original param was 'test.cmd'; full path is 'C:\test.cmd'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...