Advertisement
barnabe0057

Decompresser les telechargements

Jun 27th, 2022
940
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 3.00 KB | None
  1. @echo off
  2. setlocal enableextensions enabledelayedexpansion
  3. chcp 28591 >nul
  4.  
  5. :: -------------------------------------------
  6. :: on définit les variables
  7. :: -------------------------------------------
  8.  
  9. set "source=%USERPROFILE%\Downloads"
  10. set "destination=%USERPROFILE%\Desktop\new"
  11.  
  12. :: -------------------------------------------------
  13. :: on ajoute 7-Zip à la variable %PATH%
  14. :: -------------------------------------------------
  15.  
  16. echo %PATH% | findstr "7-Zip" || set "PATH=%ProgramFiles%\7-Zip;%PATH%"
  17.  
  18. :: -------------------------------------------------
  19. :: on récupère le dernier fichier téléchargé
  20. :: -------------------------------------------------
  21.  
  22. cd /d "%source%" || exit /b 1
  23.  
  24. for /f "delims=" %%A in ('2^>nul dir /b /od *.zip *.tar.bz2') do set "dernierFichier=%%~fA"
  25.  
  26. if not defined dernierFichier (
  27.     echo. & echo Le dernier fichier n'a pas été déterminé
  28.     pause
  29.     exit /b 1
  30. )
  31.  
  32. :: ---------------------------------------------------
  33. :: on décompresse le dernier fichier téléchargé
  34. :: ---------------------------------------------------
  35.  
  36. for %%A in ("%dernierFichier%") do (
  37.  
  38.     set "output=%destination%\%%~nA"
  39.    
  40.     if /i "%%~xA"==".zip" (7z x -y -o"!output!" "%%~fA")
  41.  
  42.     if /i "%%~xA"==".bz2" (
  43.         set "output=!output:~0,-4!"
  44.         7z x -y "%%~fA" -so | 7z x -aoa -si -ttar -o"!output!"
  45.     )
  46.  
  47.     call :recursivite "!output!"
  48.     call :rectification "!output!" "%%~nA"
  49.    
  50. )
  51.  
  52. :: ---------------------------------------------------
  53. :: on quitte le script
  54. :: ---------------------------------------------------
  55.  
  56. exit /b 0
  57.  
  58. :: --------------------------------------------------------------------------------------
  59. :: on décompresse toutes les archives qui se trouvent dans le dossier de l'archive
  60. :: --------------------------------------------------------------------------------------
  61.  
  62. :recursivite
  63.  
  64. for /f "delims=" %%E in ('2^>nul dir /b /a-d /s "%~1\*.tar.bz2"') do (
  65.  
  66.     set "sortie=%%~dpnE"
  67.     set "sortie=!sortie:~0,-4!"
  68.  
  69.     set "nom=%%~nE"
  70.     set "nom=!nom:~0,-4!"
  71.  
  72.     7z x -y "%%~fE" -so | 7z x -aoa -si -ttar -o"!sortie!"
  73.     del /q /s "%%~fE"
  74.  
  75.     call :rectification "!sortie!" "!nom!"
  76. )
  77.  
  78. for /f "delims=" %%E in ('2^>nul dir /b /a-d /s "%~1\*.zip"') do (
  79.  
  80.     set "sortie=%%~dpnE"
  81.     set "nom=%%~nE"
  82.  
  83.     7z x -y -o"!sortie!" "%%~fE"
  84.     del /q /s "%%~fE"
  85.  
  86.     call :rectification "!sortie!" "!nom!"
  87. )
  88.  
  89. goto :eof
  90.  
  91. :: ----------------------------------------------------------------------------
  92. :: on remonte le dossier d'un niveau en cas de dossier imbriqué superflu
  93. :: ----------------------------------------------------------------------------
  94.  
  95. :rectification
  96.  
  97. set /a compteur=0
  98. set /a match=0
  99. set "dossier="
  100. cls
  101.    
  102. for /f "delims=" %%C in ('2^>nul dir /b /ad /od "%~1"') do (
  103.     set /a compteur+=1
  104.     set "dossier=%%C"
  105. )
  106.    
  107. if !compteur! EQU 1 (echo %~2 | findstr /lic:"!dossier!" >nul && set /a match=1)
  108.  
  109. if !match! EQU 1 (
  110.     mkdir "%~dp1\# %~2"
  111.     robocopy "%~dp1\%~2\!dossier!" "%~dp1\# %~2" /MIR
  112.     rmdir /s /q "%~dp1\%~2"
  113.     move "%~dp1\# %~2" "%~dp1\%~2"
  114. )
  115.  
  116. goto :eof
  117.  
Advertisement
RAW Paste Data Copied
Advertisement