Liste de fichiers dans une variable
BlueskyFR
Messages postés
74
Date d'inscription
Statut
Membre
Dernière intervention
-
BlueskyFR Messages postés 74 Date d'inscription Statut Membre Dernière intervention -
BlueskyFR Messages postés 74 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite créer une dll contenant tout les icônes d'un dossier. J'ai décidé de passer par un script batch plutôt que par un logiciel tiers. Dans mon script, mon problème est que "à priori" ma variable est trop longue car je souhaite mettre la liste des fichiers dans une variable puis l'envoyer à un copy pour qu'il me mette ma liste d'icônes dans une dll (j'ai testé avec 2 icônes depuis le cmd et la dll est bien créée).
Voici le script :
Je souhaite créer une dll contenant tout les icônes d'un dossier. J'ai décidé de passer par un script batch plutôt que par un logiciel tiers. Dans mon script, mon problème est que "à priori" ma variable est trop longue car je souhaite mettre la liste des fichiers dans une variable puis l'envoyer à un copy pour qu'il me mette ma liste d'icônes dans une dll (j'ai testé avec 2 icônes depuis le cmd et la dll est bien créée).
Voici le script :
@echo off setlocal ENABLEDELAYEDEXPANSION set /a try=0 set /p rep="Répertoire contenant tout les fichiers .ico : " cd %rep% if %errorlevel%==1 cls&&echo Erreur&&echo.&&pause&&exit for /f "tokens=*" %%a In ('dir /s /b /a-d *.ico') Do call :process "%%a" goto :eof :process if %try%==0 ( set ico="%1" set /a try=1 ) else ( set ico=%ico% + "%1" ) goto :eof copy /y %ico% "Dll Creator.dll" endlocal
A voir également:
- Liste de fichiers dans une variable
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Explorateur de fichiers - Guide
- Liste code ascii - Guide
- Renommer des fichiers en masse - Guide
5 réponses
hello
et comme ca ?
et comme ca ?
set liste=
for /f "tokens=*" %%a In ('dir /s /b /a-d *.ico') Do set liste=!liste! "%%a"
echo !liste!
Donc j'ai testé ta solution et ceci marche :
Par contre, j'ai encore un problème : étant donné que j'ai rajouté un "+" car il m'en faut un pour tout copier à la fin dans un fichier dll, il faudrait que ce + et l'espace qui le suit n'apparaissent pas au début de la chaîne. Comment faire ? J'ai pensé à un for qui ne garde que la suite de la chaîne ou à un test pour ne pas le mettre la première fois mais je n'y suis pas arrivé...
Merci d'avance pour votre aide !
BlueskyFR
setlocal ENABLEDELAYEDEXPANSION set liste= for /f "tokens=*" %%a In ('dir /s /b /a-d *.ico') Do set liste=!liste! + "%%a" echo !liste! pause endlocal
Par contre, j'ai encore un problème : étant donné que j'ai rajouté un "+" car il m'en faut un pour tout copier à la fin dans un fichier dll, il faudrait que ce + et l'espace qui le suit n'apparaissent pas au début de la chaîne. Comment faire ? J'ai pensé à un for qui ne garde que la suite de la chaîne ou à un test pour ne pas le mettre la première fois mais je n'y suis pas arrivé...
Merci d'avance pour votre aide !
BlueskyFR
Finalement le problème du + et de l'espace est résolu avec ceci :
Mais il y a encore un bug (malheureusement) au niveau du
qui n'accepte pas une chaîne si longue ni le paramètre "!liste!" (placé avant endlocal)
Des idées ?
setlocal ENABLEDELAYEDEXPANSION set /a try=0 set liste= for /f "tokens=*" %%a In ('dir /s /b /a-d *.ico') Do ( if !try!==0 (set liste="%%a"&&set /a try=1) if !try!==1 (set liste=!liste! + "%%a") ) echo !liste! pause endlocal
Mais il y a encore un bug (malheureusement) au niveau du
copy /y %liste% "Dll Creator.dll"
qui n'accepte pas une chaîne si longue ni le paramètre "!liste!" (placé avant endlocal)
Des idées ?
je n'ai pas testé
setlocal ENABLEDELAYEDEXPANSION
set /a try=0
set liste=
set tmp=%TEMP%\xxx
mkdir %tmp%
for /f "tokens=*" %%a In ('dir /s /b /a-d *.ico') Do copy /y "%%a" %tmp%
cd %tmp%
for %%a In (*.ico) Do (
if !try!==0 (set liste="%%a"&&set /a try=1)
if !try!==1 (set liste=!liste! + "%%a")
)
echo !liste!
copy /Y !liste! "Dll Creator.dll"
Il faut juste changer le nom de ta variable %tmp% car c'est une variable d'environnement qui équivaut à %temp% ^^
Malheureusement je ne vois ton message que maintenant mais j'avais déjà eu cette idée et... bug lors de la lecture de la dll : il me dis : aucun icônes dedans...
Je teste quand même ton script pour voir ;)
Malheureusement je ne vois ton message que maintenant mais j'avais déjà eu cette idée et... bug lors de la lecture de la dll : il me dis : aucun icônes dedans...
Je teste quand même ton script pour voir ;)
Pourtant l'autre jour j'ai testé de faire cette commande avec 2 fichiers .ico et la dll était lue sans problème...
Maintenant, j'ai réessayé et ça ne marche plus, bizarre :(
Maintenant, j'ai réessayé et ça ne marche plus, bizarre :(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci, je teste ça.