如何对变量而不是参数使用批处理参数修饰符

时间:2011-03-08 05:19:32

标签: parameters batch-file

语法%~f1将表示文件名的参数修改为其完全限定路径。有没有办法为批处理脚本中定义的变量获取该功能,而不仅仅是参数值?

例如,如果用户提供命令行参数“test.txt”,则以下脚本有效:
    echo符合条件的文件名:%~f1

但如果我尝试用变量而不是参数做同样的事情,我怎样才能获得相同的功能?此尝试语法无效,不起作用:
    set unqualifiedFilename =“test.txt”
    echo符合条件的文件名:%~funqualifiedFilename

2 个答案:

答案 0 :(得分:4)

我能想到的最简单的方法就是使用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'

答案 1 :(得分:4)

第二种方法是调用函数并使用%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