Remplacer if en Batch

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

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. 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.”