Copie sous condition

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
Manu310
Batcheur occasionnel
Messages : 1
Enregistré le : 20 mars 2017 17:22

Copie sous condition

Message 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
letshavefun
Batcheur occasionnel
Messages : 6
Enregistré le : 29 mars 2017 11:52

Re: Copie sous condition

Message 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
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: Copie sous condition

Message par barnabe0057 »

Bonsoir,

Code : Tout sélectionner

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