2009-01-18 10 views
8

Je suis actuellement à la recherche d'un moyen de prendre une variable en batch et d'analyser uniquement le nom de fichier. Par exemple, je passe un paramètre -s de mon fichier de commandes à partir d'une autre application qui est ensuite définie sur ma variable source. La variable de fichier source contient généralement quelque chose comme: C: \ Program Files \ myapp \ Instance.1 \ Data \ filetomove.ext.In Batch: Lit uniquement le nom de fichier d'une variable avec le chemin et le nom de fichier

Je suppose lire de la fin de la variable jusqu'au premier "\" et définir le résultat à un nouveau nom de fichier variable, mais je n'ai pas pu utiliser le "for/f" commmand avec succès.

Toute aide serait grandement appréciée!

Mise à jour: uniquement XP ou Windows 2000/2003 standard disponibles ... (impossible de supposer que les kits de ressources sont installés).

Répondre

9

Si son entrée en argument au script, soit% 1,% 2, etc., vous pouvez extraire simplement le nom du fichier et l'extension dans une variable comme ceci:

set FILENAME=%~nxN 

où N est l'indice de l'argument. Par exemple, ce script echo juste le nom du premier argument:

@echo off 
set FILENAME=%~nx1 
echo %FILENAME% 
+0

Merci beaucoup! Je relisais l'aide et compliquais les instructions% ~ nxI. Merci!!!! – Michael

+0

Oui. Ces instructions sont vraiment très succulentes, si vous avez la chance de les trouver. –

+0

+1 était sur le point de demander cela, SO a un grand détecteur de questions en double :-) –

2

version légèrement améliorée:

set FILENAME="%~nx1" 

La parenthèse supplémentaire veillera à ce que des caractères spéciaux, tels que « & », ne sera pas interférer pendant l'exécution du lot.

Questions connexes