Windows中的FOR
命令有一些DOS選項中沒有的選項。具體來說,它支持如下返回文件名段。批處理命令未返回預期路徑
In addition, substitution of FOR variable references has been enhanced.
You can now use the following optional syntax:
%~I - expands %I removing any surrounding quotes (")
%~fI - expands %I to a fully qualified path name
%~dI - expands %I to a drive letter only
%~pI - expands %I to a path only
%~nI - expands %I to a file name only
%~xI - expands %I to a file extension only
%~sI - expanded path contains short names only
%~aI - expands %I to file attributes of file
%~tI - expands %I to date/time of file
%~zI - expands %I to size of file
當我嘗試使用下面的命令,這是行不通的。它不打印\Program Files
,它打印\
。
for %i in ("%programfiles%") do echo %~pi
似乎只有p
說法不正確,因爲其他參數返回預期的結果。
> for %i in ("%programfiles%") do echo %i
C:\Program Files
> for %i in ("%programfiles%") do echo %~i
C:\Program Files
> for %i in ("%programfiles%") do echo %~fi
C:\Program Files
> for %i in ("%programfiles%") do echo %~is
C:\PROGRA~1
> for %i in ("%programfiles%") do echo %~id
C:
有誰知道這個問題可能是什麼?
Doh!我想這是有道理的,因爲它無法區分文件名和文件夾名,所以它認爲* Program Files *是一個文件名。 **感謝您的澄清。**爲了記錄,在%(%programfiles%\「)中使用'%i'做echo%〜pi'返回'\ Program Files \',所以我想這是(儘管它不是*我想要的)。 – Synetech 2011-03-22 00:24:45