Comment obtenir le chemin d'un script batch sans la barre oblique de fin en une seule commande?
Supposons que je souhaite obtenir le chemin absolu d'un script batch à partir de dans le script de traitement par lot lui-même, mais sans une barre oblique inverse. Normalement, je le fais de cette façon:
SET BuildDir=%~dp0
SET BuildDir=%BuildDir:~0,-1%
La première phrase devient le chemin d'accès avec la barre oblique de fin et la deuxième ligne supprime le dernier caractère, c'est à dire la barre oblique inverse. Est-il possible de combiner ces deux états en une seule ligne de code?
Vous devez vous connecter pour publier un commentaire.
Au lieu de supprimer la barre oblique inverse, l'ajout d'un point est sémantiquement équivalent pour de nombreux logiciels.
C:\Windows est équivalent à C:\Windows\.
Par exemple, robocopy accepte uniquement les répertoires sans espaces.
Cette erreur:
C'est un succès:
%~dp0
à Robocopy .Seulement avec l'expansion retardée lorsque vous écrivez des deux états dans la même ligne:
Mais qui a plutôt défie le but.
Je tiens à souligner qu'il n'est pas sécuritaire d'utiliser la sous-chaîne astuces sur les variables qui contiennent des chemins de système de fichiers, il y a juste trop de symboles comme !,^,% qui sont valables pour des noms de dossier/fichier et il n'y a aucun moyen d'échapper correctement tous les
DE /D semble tranche de la barre oblique de fin, voici donc une version qui utilise pour:
Cela nécessite Win2000 et risque d'échouer si le fichier de commandes est sur un chemin d'accès UNC
Exemple de script "c:\Temp\test.cmd":
Exécuter dans la console:
C:\Temp
, pasC:\Temp\
ouC:\Temp\.
. Je dis juste que l'ajout n'est pas la même que la suppression, même si elles correspondent à la même chose plus tard.