Page 1 sur 1

Copie sous condition

Posté : 20 mars 2017 18:00
par Manu310
Bonjour à tous ! :)
Je poste ici un problème déjà soumis à OpenClassroom (ancien site du zéro) mais qui n'a pas encore trouvé réponse :

Je découvre un peu le batch en ce moment... Enfin, je sors des simples cd et appels de scripts...

J'essaie, dans le cadre d'un projet, de copier tous les fichiers d'un dossier (un external de mon appli) dans le package de livraison.

En reprenant un batch existant, j'arrive par exemple à copier tous les fichiers avec l'extension .dll :

Code : Tout sélectionner

for /R %srcDir% %%f in (*.dll) do (
    copy %%f %destDir%
)
En revanche, malgré mes essais, je n'arrive pas à filtrer cette copie avec une condition. En particulier, je souhaite copier toutes les dll, mais pas les dll debug (par exemple avec Qt tous les .dll sauf en d4.dll)...

J'ai essayé quelque chose comme ce qui suit mais sans succès. Des pistes ? Une proposition de correction ?

Code : Tout sélectionner

for /R %srcDir% %%f in (*.dll) do (
    set temp = %%f
    set temp = !temp:4d.dll=!
    if %%f==!temp! copy %%f %destDir%
)

Je préviens : je sais que je dois faire des trucs bizarres avec les variables... autant j'ai compris la différence entre variable et %variable%, autant avec les %% et les !variable!, c'est déjà plus obscur pour moi ! (Tout éclaircissement sur ce point sera le bienvenu aussi)

Merci d'avance pour votre aide :)

Manu

Re: Copie sous condition

Posté : 29 mars 2017 14:38
par letshavefun
bonjour, il faut pas mettre d'espace entre le nom d'une variable et le signe =
par contre ça ça fonctionne

Code : Tout sélectionner

set /a nombre = 10

Re: Copie sous condition

Posté : 29 mars 2017 23:39
par barnabe0057
Bonsoir,

Code : Tout sélectionner

for /R "%srcDir%" %%G in (*.dll) do (echo %%~nxG | findstr /C:"4d.dll" || copy "%%~dpnxG" "%destDir%")