Je suis en train d'écrire un fichier de commandes dans Windows XP qui prend un nom de chemin complet et fournit le 8.3 version courte nom ...paramètre de lot% ~ s1 donne incorrect 8.3 nom court
@echo off
echo "%~s1"
Je suis venu dans un cas particulier lorsque cette commande affiche un chemin incorrect et le fichier ...
C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62[1].ja2"
"C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62_1_~1.JA2M34V\62[1].ja2"
Notez que la sortie ci-dessus ("C: \ DOCUME ~ 1 \ angus \ ~ 1 LOCALS \ TEMPOR ~ 1 \ Content.IE5 \ 2JSTM34V \ 62_1_ ~ 1.JA2M34V \ 62 [1] .ja2 ") n'existe pas. Si je supprime la section «.JA2M34V \ 62 [1]» de cette sortie, la chaîne résultante serait un chemin d'accès valide au fichier d'entrée d'origine.
Cela semble être un problème avec l'utilisation de parenthèses ([]) dans le nom de fichier. Si je crée un fichier 62.ja2 dans le même répertoire, la sortie sera correcte ...
C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62.ja2"
"C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62.ja2"
Est-ce un bogue dans Windows? Est-ce que quelqu'un sait s'il existe une solution de contournement pour permettre au fichier batch de gérer correctement ce nom de fichier?
Non, c'est bug dans votre code. Vous utilisez un hack obsolète qui n'existe que pour la compatibilité ascendante avec un logiciel stupide. N'utilisez pas de noms courts. –