Remplacer if en Batch

Fermé
Studio_Batch Messages postés 2 Date d'inscription jeudi 4 janvier 2018 Statut Membre Dernière intervention 14 janvier 2018 - 14 janv. 2018 à 15:19
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 - 14 janv. 2018 à 15:23
Salut tout le monde,
Je souhaiterai faire un programme qui rangerait les fichiers entreposés dans Téléchargemement Dans leur dossier respectif .
Seulement si c'est un .png , son répertoire sera
C:\Users\%USERNAME%\Downloads\Images\png
et les .msi dans
C:\Users\%USERNAME%\Downloads\Executables_et_archives\msi
.
Pour l'instant mon programme est :
for %%f in ( C:\Users\%USERNAME%\Downloads\*.* ) do ( call :process )

pause > nul

:process
if %~1==*.png ( move %~1 C:\Users\%USERNAME%\Downloads\Images\png ) echo Transfert effectué avec succes pour %~1
if %~1==*.jpg ( move %~1 C:\Users\%USERNAME%\Downloads\Images\jpg ) echo Transfert effectué avec succes pour %~1
if %~1==*.ico ( move %~1 C:\Users\%USERNAME%\Downloads\Images\ico ) echo Transfert effectué avec succes pour %~1
if %~1==*.odp ( move %~1 C:\Users\%USERNAME%\Downloads\Documents\odp ) echo Transfert effectué avec succes pour %~1
REM Et ainsi de suite ....
goto :eof

Je voudrais savoir si il existe une commande qui rechercherait le bon dossier du fichier traité sans passer par if .

Merci d'avance
A voir également:

1 réponse

barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
Modifié le 14 janv. 2018 à 16:09
Bonjour,

Pour l'instant ton script ne fonctionne pas car tu appelles une fonction paramétrée sans lui passer de paramètre.

Ton code contient trop de IF, il faut l'optimiser :

setlocal enableextensions
cd /d %USERPROFILE%\Downloads

for %%J in (png jpg ico) do (call :process Images "%%~xJ" "%%~J")
for %%H in (odp xls ppt) do (call :process Documents "%%~xH" "%%~H")
for %%G in (msi exe zip rar) do (call :process Executables_et_archives "%%~xG" "%%~G")

pause > nul

:process
if not exist "%CD%\%1\%~2" (mkdir "%CD%\%1\%~2")
move "%CD%\%~3" "%CD%\%1\%~2" && echo Transfert effectué avec succes pour %~3
goto :eof





“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
0