2010-01-06 104 views

回答

0

如果你只需要父目录的名称,你可以使用类似基于弗雷泽格雷厄姆的回答为10

ECHO %~p0>path.txt  
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10 delims=\" %%G in (path.txt) DO (
IF NOT [%%G]==[] SET myVar=%%G 
IF NOT [%%H]==[] SET myVar=%%H 
IF NOT [%%I]==[] SET myVar=%%I 
IF NOT [%%J]==[] SET myVar=%%J 
IF NOT [%%K]==[] SET myVar=%%K 
IF NOT [%%L]==[] SET myVar=%%L 
IF NOT [%%M]==[] SET myVar=%%M 
IF NOT [%%N]==[] SET myVar=%%N 
IF NOT [%%O]==[] SET myVar=%%O 
IF NOT [%%P]==[] SET myVar=%%P 
) 
DEL path.txt /F /Q 
ECHO %myVar% 

最大嵌套级别,其工作原理如下因素

2

微软解释了如何为循环来标记文件路径,然后拉出目录名称做了一个很好的批处理参考...

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true

如果你有一个文件,其中包含一个文件tmp.txt的列表...

c:\temp\folder\foo.txt 

可以解析批处理文件名者与...

for /F "delims=\ tokens=1,2,3" %%i in (tmp.txt) do call echo %%i %%k %%j 

和产生...

%%i = c: 
%%j = temp 
%%k = folder 

后,您可以使用该目录名称相匹配,如复印文件名中的变量。但是,这只有在所有路径具有相同深度的情况下才有效。

相关问题