Liste de fichiers dans une variable
BlueskyFR
Messages postés
76
Statut
Membre
-
BlueskyFR Messages postés 76 Statut Membre -
BlueskyFR Messages postés 76 Statut Membre -
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 code ascii - Guide
- Liste déroulante en cascade - Guide
- Explorateur de fichiers - 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.