2010-01-06 7 views

Répondre

0

Si vous avez seulement besoin du nom de répertoire parent vous pouvez utiliser quelque chose comme ce qui fonctionne pour que vous avez choisi un niveau d'imbrication maximum de 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% 

Sur la base de la réponse de Fraser Graham

2

Microsoft a un bon lot de référence qui explique comment vous pouvez faire une boucle à tokenizer un chemin de fichier et retirer le nom du répertoire ...

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

Si vous avez un fichier qui contient un liste des fichiers, tmp.txt ...

c:\temp\folder\foo.txt 

vous pouvez analyser les noms de fichiers en lot avec ...

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

et qui produit ...

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

après que vous pouvez utiliser la variable qui correspond au nom du répertoire que le nom de fichier dans votre copie. Cependant, cela ne fonctionne que si tous les chemins ont la même profondeur.