2011-03-08 66 views
7

语法%〜f1将表示文件名的参数修改为完全限定路径。有没有一种方法可以获得批处理脚本中定义的变量的功能,而不仅仅是参数值?如何在变量而不是参数上使用批量参数修饰符

例如,如果用户提供了一个命令行参数“的test.txt”,下面的脚本作品:
呼应合格的文件名:%〜F1

但是,如果我试图做同样的事情用变量而不是参数,我如何获得相同的功能?这种尝试是无效的语法并不起作用:
集unqualifiedFilename =“test.txt的”
呼应合格的文件名:%〜funqualifiedFilename

回答

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'
+0

完美的作品,谢谢! – Blaine 2011-03-08 05:45:53

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