A voir également:
- Récupérer un nom 8.3 [BATCH]
- Comment recuperer un message supprimé sur whatsapp - Guide
- Recuperer video youtube - Guide
- Comment récupérer un compte facebook piraté - Guide
- Fichier batch - Guide
- Nom de l'adresse - Forum Réseaux sociaux
7 réponses
Bonjour à tous, j'ai essayer votre petit bout de script qui marche bien sur un pc mais sur un autre le résultat est pour le moment surprenant !
Voici donc mon script :
@echo off
set cible="D:\Echange\1 Projet SCLE\ATLN\Code uC\projet\Hex\binaire.h86"
for /f %%a in ('echo %cible%') do (
set toto=%%~fsa
)
echo %toto%
pause
Le retour :
D:\Echange\1PROJE~1\ATLN\CODEUC~1\projet\Hex\binaire.h86.h86
Avez-vous une idée de pourquoi il me rajoute une deuxième fois l'extension du fichier ?
Merci d'avance
Benoit
Voici donc mon script :
@echo off
set cible="D:\Echange\1 Projet SCLE\ATLN\Code uC\projet\Hex\binaire.h86"
for /f %%a in ('echo %cible%') do (
set toto=%%~fsa
)
echo %toto%
pause
Le retour :
D:\Echange\1PROJE~1\ATLN\CODEUC~1\projet\Hex\binaire.h86.h86
Avez-vous une idée de pourquoi il me rajoute une deuxième fois l'extension du fichier ?
Merci d'avance
Benoit
karirovax
Messages postés
3221
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
22 juin 2016
203
Modifié par karirovax le 6/08/2010 à 21:50
Modifié par karirovax le 6/08/2010 à 21:50
salut ;)
mettez le entre guillemets =)
SET cible="C:\Program files\un nom bien (foireux)\dossier1"
pourquoi :
car le Ms-Dos ne gere pas les éspaces ainsi que les noms dépaçants 8 caractères
par exemple dans la commande GOTO elle traite les mots inferieurs ou égal à 8 caractére c-à-d :
GOTO coucouuua est la meme que GOTO coucouuu
mettez le entre guillemets =)
SET cible="C:\Program files\un nom bien (foireux)\dossier1"
pourquoi :
car le Ms-Dos ne gere pas les éspaces ainsi que les noms dépaçants 8 caractères
par exemple dans la commande GOTO elle traite les mots inferieurs ou égal à 8 caractére c-à-d :
GOTO coucouuua est la meme que GOTO coucouuu
dubcek
Messages postés
18757
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
19 décembre 2024
5 623
Modifié par dubcek le 7/08/2010 à 12:53
Modifié par dubcek le 7/08/2010 à 12:53
hello
pour afficher un nom court
pour afficher un nom court
@echo off set cible="C:\Program files\un nom bien (foireux)\dossier1" for /f "delims=" %%a in ('echo %cible%') do ( echo %%~fsa )
facedepoulet
Messages postés
11
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
11 août 2010
1
9 août 2010 à 20:02
9 août 2010 à 20:02
Bonjour,
l'affichage de ton code est le suivant :
Comme tu le vois le chemin n'est pas complètement court !
J'ai pensé à extraire chaque chaîne et la traiter séparément mais là encore je n'obtiens pas le nom court comme je le veux ...
Je mets le code, peut-être que qqu'un peut trouver l'erreur :
N'hésitez pas à proposer des solutions !
Il existe certainement d'autres manières de le coder ...
++
l'affichage de ton code est le suivant :
C:\PROGRA~1\un nom bien (foireux)\dossier1"
Comme tu le vois le chemin n'est pas complètement court !
J'ai pensé à extraire chaque chaîne et la traiter séparément mais là encore je n'obtiens pas le nom court comme je le veux ...
Je mets le code, peut-être que qqu'un peut trouver l'erreur :
@echo off :: On renseigne le chemin SET cible=\\192.168.1.x\un nom (foireux)\Program files\dossier d'install\un autre dossier\repertoire a la noix :: On extrait chaque "branche" de l'arborescence / Il doit y avoir autant de tokens que de "branches" FOR /F "tokens=1-6 delims=\" %%a in ("%cible%") do ( IF NOT "%%a"=="" echo %%a> Extract.txt IF NOT "%%b"=="" echo %%b>> Extract.txt IF NOT "%%c"=="" echo %%c>> Extract.txt IF NOT "%%d"=="" echo %%d>> Extract.txt IF NOT "%%e"=="" echo %%e>> Extract.txt IF NOT "%%f"=="" echo %%f>> Extract.txt ) setlocal ENABLEdelayedEXPANSION SET compteur=0 echo. :: On parcourt le fichier contenant le résultat ligne par ligne FOR /F "tokens=*" %%A in (extract.txt) do ( SET /a compteur+=1 echo La branche !compteur! est : %%A echo Le nom court est ??? / Test : %%~nsA echo. ) pause
N'hésitez pas à proposer des solutions !
Il existe certainement d'autres manières de le coder ...
++
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18757
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
19 décembre 2024
5 623
Modifié par dubcek le 10/08/2010 à 13:41
Modifié par dubcek le 10/08/2010 à 13:41
pour afficher le nom court, il faut que le répertoire un nom bien (foireux) existe
C:> dir /b/s z C:\Documents and Settings\xxx\Mes documents\src\z\un nom bien (foireux) C:\Documents and Settings\xxx\Mes documents\src\z\un nom bien (foireux)\dossier1 C:> bb C:\DOCUME~1\xxx~1\MESDOC~1\src\z\UNNOMB~1\dossier1 C:\DOCUME~1\xxx~1\MESDOC~1\src\z\UNNOMB~1\dossier1 C:> type bb.bat @echo off set cible="C:\Documents and Settings\xxx\Mes documents\src\z\un nom bien (foireux)\dossier1" for /f "delims=" %%a in ('echo %cible%') do ( echo %%~sa echo %%~fsa ) C:>
facedepoulet
Messages postés
11
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
11 août 2010
1
11 août 2010 à 10:03
11 août 2010 à 10:03
Bonjour dubcek,
merci pour ta réponse. La cible peut changer, c'est pourquoi j'ai créé une variable ...
Si le dossier doit exister pour pouvoir générer un nom court, le fichier de commandes génèrera des erreurs.
J'ai vu que dans PowerBatch il y avait une option pour générer des noms courts mais bien sûr le "convertisseur" n'est pas dans le répertoire d'install, il doit être compilé dans le programme donc impossible d'accéder au code ... :(
Je cherche une manière de convertir n'importe quel nom de dossier/fichier en son équivalent court !
Ca a l'air compliqué surtout quand le nom n'est pas unique !
Explication (Comment Windows transf. les noms longs) :
https://support.microsoft.com/fr-fr/help/142982
Le problème est récurrent, lors de l'utilisation d'un nom long avec des caractères non valides dans une boucle FOR ou avec un IF le programme plantera ! (\dossierXYZ était inattendu)
Le top serait de pouvoir le coder avec des commandes DOS internes uniquement ...
J'ai essayé bcp de méthodes, avec et sans guillemets, avec 1 et plusieurs tokens,
le résultat est décevant.
Certains disent "Te fais pas ch***, code le avec tel langage ou tel autre !"
Le DOS ça pue un peu c'est sûr, c'est pas très puissant mais il peut faire le boulot ...
Je pense qu'il est possible de le faire, si c'est possible la solution existe.
Si quelqu'un a la solution, un bout de code à proposer, je suis preneur !
Merci d'avance !
merci pour ta réponse. La cible peut changer, c'est pourquoi j'ai créé une variable ...
Si le dossier doit exister pour pouvoir générer un nom court, le fichier de commandes génèrera des erreurs.
J'ai vu que dans PowerBatch il y avait une option pour générer des noms courts mais bien sûr le "convertisseur" n'est pas dans le répertoire d'install, il doit être compilé dans le programme donc impossible d'accéder au code ... :(
Je cherche une manière de convertir n'importe quel nom de dossier/fichier en son équivalent court !
Ca a l'air compliqué surtout quand le nom n'est pas unique !
Explication (Comment Windows transf. les noms longs) :
https://support.microsoft.com/fr-fr/help/142982
Le problème est récurrent, lors de l'utilisation d'un nom long avec des caractères non valides dans une boucle FOR ou avec un IF le programme plantera ! (\dossierXYZ était inattendu)
Le top serait de pouvoir le coder avec des commandes DOS internes uniquement ...
J'ai essayé bcp de méthodes, avec et sans guillemets, avec 1 et plusieurs tokens,
le résultat est décevant.
Certains disent "Te fais pas ch***, code le avec tel langage ou tel autre !"
Le DOS ça pue un peu c'est sûr, c'est pas très puissant mais il peut faire le boulot ...
Je pense qu'il est possible de le faire, si c'est possible la solution existe.
Si quelqu'un a la solution, un bout de code à proposer, je suis preneur !
Merci d'avance !