La commande suivante dans un fichier de commandes ne fonctionne pas comme prévu/espéré:Obtenir court Nom du fichier des arguments de ligne de commande par lots fichier
echo %~nxs1
Voici un exemple d'affichage de ce que je suis en train de faire:
C:\>type test.bat
@dir /b %1
@echo %~nxs1
C:\>test "C:\Documents and Settings\All Users\ntuser.dat"
ntuser.dat
NTUSER.DAT
C:\>test "C:\Documents and Settings\All Users\ntuser.data"
ntuser.data
NTUSER~1.DA~
C:\>test "C:\Documents and Settings\All Users\ntuser.dat.baz"
ntuser.dat.baz
NTUSER~1.BAZ
C:\>test "C:\Documents and Settings\All Users\foo.bar.baz"
File Not Found
foo.bar.baz (or FOO~1.BAZ or whatever, doesn’t really matter since
file does not exist, though latter would be nice)
au lieu de cela ce que je reçois quelque chose comme ce qui suit (en fonction de court-noms attribués):
C:\>type test.bat
@dir /b %1
@echo %~nxs1
C:\>test "C:\Documents and Settings\All Users\ntuser.dat"
ntuser.dat
s\ntuser.dat
C:\>test "C:\Documents and Settings\All Users\ntuser.data"
ntuser.data
s\ntuser.data
C:\>test "C:\Documents and Settings\All Users\ntuser.dat.baz"
ntuser.dat.baz
z
C:\>test "C:\Documents and Settings\All Users\foo.bar.baz"
File Not Found
s\foo.bar.baz
Fondamentalement, je dois passer un nom de fichier dans un fichier BAT et ont le get script (par exemple l'affichage) comme un court nom de fichier, mais seul le nom de fichier et l'extension, pas de lecteur ou chemin.
Les informations d'aide pour POUR donne % ~ Fsi comme exemple, mais qui a tout le chemin comme un court nom de fichier, pas seulement le fichier. Est-ce que quelqu'un sait comment combiner le paramètre S de % ~ sans obtenir le chemin entier?
Merci beaucoup.
Mises à jour
Je ne cherche pas une solution dans une autre langue, je besoin de la commande BAT pour travailler.
Il semble que cela fonctionne pour les autres, donc je vérifie pour voir si c'est une sorte de problème de configuration alternative. Je suis en train de tester pour voir si les extensions de processeur de commande pourraient être la cause. Cela ne fonctionnera pas du tout si les extensions sont désactivées (évidemment), donc je pars de l'hypothèse que c'est un bug qui a été corrigé dans un service pack suivant (le système sur lequel j'ai testé est XP SP1). Je suis en train de tester SP2 et SP3 aujourd'hui ...
Je n'ai aucun problème à exécuter votre exemple de script. – ghostdog74
Votre script fonctionne pour moi tel quel sur WinXP –