2011-03-08 56 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