2011-08-30 169 views

回答

5

這是一個黑客位,但你可以使用:

Set NasPath=C:\Things\Folder 
Set NasFolder=%NasPath% 
:GetFolder 
Set GetFolderTemp=%NasFolder:*\=% 
If Not %GetFolderTemp%==%NasFolder% (
    Set NasFolder=%GetFolderTemp% 
    Goto :GetFolder 
) 
Echo NasPath =%NasPath% 
Echo NasFolder=%NasFolder% 
Exit /B 

不管你做什麼,不要把周圍的Set NasPath=...聲明的任何部分的報價。使用引號是這樣的:

Set FromPath=C:\Program Files\Blah 
Set NasPath=C:\Things\Folder 
RoboCopy "%FromPath%" "%NasPath%" 

不要使用引號是這樣的:

Set FromPath="C:\Program Files\Blah" 
Set NasPath="C:\Things\Folder" 
RoboCopy %FromPath% %NasPath% 
+1

+1,但是你應該總是用這種方式引用''Set「FromPath = C:\ Program Files \ Blah」'否則你失敗並且'Set FromPath = C:\ Documents&Settings' – jeb

+0

@jeb'SET FromPath = C :\ Docs and Settings'是有效的。就像@ Hand-E所說的那樣,要使用該變量,請用引號括起來,''%FromPath%「'。 – aphoria

+0

很明顯,「文檔和設置」有效,但有一個&符號失敗,並且文件/路徑名稱允許使用&符號 – jeb

0

假設C:\Program Files\Mickey\Mouse樣的路徑(不帶引號),你也可以使用下面的代碼:

setlocal EnableDelayedExpansion 

set path=C:\Program Files\Microsoft\Mickey\Mouse 
:shift 
for /f "tokens=1* delims=\/" %%i in ("!path!") do (
    set folder=%%i 
    set path=%%j 
) 
if not [!path!] == [] goto :shift 

echo folder: !folder! 

endlocal 
+0

請注意,這將覆蓋'PATH'環境變量。 –

1

爲了不與空間有任何問題,我建議這個代碼:

Set NasPath=C:\Things\My Space\Folder 
Set GetFolderTemp=%NasPath% 
:GetFolder 
FOR /F "tokens=1,* delims=\" %%1 IN ("%GetFolderTemp%") do (
set NasFolder=%%1 
set GetFolderTemp=%%2 
) 
if not "a%GetFolderTemp%"=="a" goto :GetFolder 

echo %NasFolder% 
相關問題