Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[R] recupérer le 1er resultat d'un DIR dans une variable
Auteur Message
Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
Bonjour à tous,

je cherche à recuperer le nom d'un dossier dans une variable via une commande DIR..(pas le nom du dossier courant)

dir /ad/b "C:\Documents and Settings\uliage\test" DO SET dossier=%%A

echo dossier : %dossier%


et rien ne sort..



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Re: recupérer le 1er resultat d'un DIR dans une variable 
Salut, normal que rien ne sorte il faut passer par une commande FOR,

en revanche, que veux-tu faire exactement, car tu peux soit :

- Garder le dernier dossier affiché par Dir (il sera donc enregistrer, les autres dossier non)
- Garder tout les dossier affiché (dans ce cas il faudra soit passer par %Var-1% pour afficher le dossier n°1 de la liste ou tout mettre en ligne dans une variable commune)

@ ++ Okay Wink




______________________________________________________
Coucou, tu veux voir mon Site Web ?? Mort de Rire
Visiter le site web du posteur Skype
Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
en fait je veux garder que le 1er résultat donc est ce que j'ai besoin quand même d'une boucle ?



Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
ruizsco a écrit:
en fait je veux garder que le 1er résultat donc est ce que j'ai besoin quand même d'une boucle ?

Code:
SET /p dossier=%%A < dir /ad/b "C:\Documents and Settings\uliage\test"





______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
Code:
for /f "delims=" %%a In ('dir /b  "C:\Documents and Settings\uliagetest" ') Do (
      echo %%a
)

bon.. ça marche parce qu'il n'y a qu'un seul dossier mais si il y en avait plusieurs..

Maintenant comment mettre le resultat dans une variable ?


merci



Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
salut,

Utilise les balises code STP (<>).

Code:

for /f "delims=" %%a In ('dir /b "C:\Documents and Settings\uliagetest" ') Do (
set "rep=%%a"
goto:next
)

:next
echo Le rep est : %rep%





______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
La meilleure méthode que je préfère est d'utiliser un tableau Wink

Code:
@echo off
set "Folder=%userprofile%\Desktop"
SET "Count=0"
SETLOCAL enabledelayedexpansion
rem en remplissant notre tableau avec la boucle for .. do
FOR /f "delims=" %%f IN ('dir /b /ad "%Folder%\"') DO (
   SET /a "Count+=1"
   set "Dossier[!Count!]=%%f"
)

rem Afficher tous les elements du tableau
for /L %%i in (1,1,%Count%) do (
   echo Dossier[%%i] = !Dossier[%%i]!
)
pause
rem Pour afficher le 1er élément du tableau cad le 1er dossier
cls
echo Le 1er dossier est : !Dossier[1]!
pause

rem Pour afficher le dernier élément cad le dernier dossier
cls
echo Le dernier dossier est : !Dossier[%Count%]!
pause





______________________________________________________
Mes Contributions en Téléchargement
Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
Autre astuce, juste pour l'info
Code:
dir /ad/b "CHEMIN">test.txt
Set /P test=<test.txt
Echo %test%
Del test.txt


Après sinon oui, pas mieux que ça même si l'utilisation d'un goto est horrible:
Code:
For /F %%$ In ('dir /ad/b "CHEMIN"') Do (
   Set Dossier=%%$
   Goto:SORTIE
)
:SORTIE

Echo %Dossier%


Okay




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
Logan a écrit:

Après sinon oui, pas mieux que ça même si l'utilisation d'un goto est horrible:
Okay



??????????? pourquoi horrible ???????????????????

Tous les languages de programmation on leur [EXIT_LOOP]
La première solution que tu proposes, elle est horrible, un fichier temporaire pour ça .


Maintenenat si tu trouves le GOTO horrible et que tu ne veut pas de fichier Temporarire :


Code:

@echo off
Setlocal enabledelayedexpansion
set /a $c=1

    For /F %%$ In ('dir /ad/b "CHEMIN"') Do (
       if !$c!==1 Set "Dossier=%%$"
       set /a $c+=1
    )
     
Echo %Dossier%




Wink




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
Sachadee, j'ai bien dit juste pour montrer l'astuce, pour un débutant c'est bien d'apprendre
plusieurs façon de faire, j'ai jamais dit quelle était super loin de là Wink

Pour le goto je parlais pas spécialement du tiens, moi-même j'ai cherché et j'ai pas trouvé
mieux. Et oui je trouve cette façon de faire un peu pabô.

Okay




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
J'ai bien compris Logan pour le premier code !

Mais bon heureusement qu'il y a un moyen de sortir d'une boucle autre qu'un compteur.

Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
Au passage petite technique pour choisir le dossier à mettre dans la variable :

Code:
@Echo Off

Set SKIP=1

For /F "Skip=%SKIP%" %%$ In ('dir /ad/b "C:\Users\Abruti\Desktop"') Do (
   Set Dossier=%%$
   Goto:SORTIE
)
:SORTIE

Echo %Dossier%

Pause>Nul


Donner à SKIP la valeur N-1 de la place du dossier, par exemple pour récupérer le dossier 2 on donne 1 comme valeur à SKIP, pour 5 on donne 4 etc.




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
Logan a écrit:
Autre astuce, juste pour l'info
Code:
dir /ad/b "CHEMIN">test.txt
Set /P test=<test.txt
Echo %test%
Del test.txt



C'est bien je ne suis pas contre mais dans quelques cas particuliers ça ne marchera pas parce qu'il y a un nombre
limité de caractère que l'on peut mettre dans une variable depuis un fichier
donc si le chemin vers le fichier est trop long et bin.....le chemin sera couper vers le 1023eme caractère

Voilà pour l'info inutile mais je tenais à le dire Mr. Green Okay




______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
Flammrock a écrit:
Logan a écrit:
Autre astuce, juste pour l'info
Code:
dir /ad/b "CHEMIN">test.txt
Set /P test=<test.txt
Echo %test%
Del test.txt



C'est bien je ne suis pas contre mais dans quelques cas particuliers ça ne marchera pas parce qu'il y a un nombre
limité de caractère que l'on peut mettre dans une variable depuis un fichier
donc si le chemin vers le fichier est trop long et bin.....le chemin sera couper vers le 1023eme caractère

Voilà pour l'info inutile mais je tenais à le dire Mr. Green Okay


En utilisant FOR la limite est de 8192 caractères.


Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [R] recupérer le 1er resultat d'un DIR dans une variable 
En fait vu que tu soumets la chose, avant windows 10, le chemin complet d'un
fichier/dossier ne pouvait contenir plus que 260 caractères.

Cette limitation à été tout simplement passée à celle imposée par le NTFS (32 767)
depuis Windows 10, encore faut-il l'activer manuellement.

Au passage 32767 correspond à la valeur max de random :O

De fait, elle n'est donc pas activée par défaut Okay


Informations complémentaires sur developpez.com


De base pour dépasser 255 fallait le vouloir, alors 10 000 faudrait en plus activer la
fonctionnalité le permettant en sachant quelle existe au préalable...




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Message [R] recupérer le 1er resultat d'un DIR dans une variable 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch