2017-02-10 5 views
1

Vous souhaitez également supprimer des dossiers (sous-dossiers) d'une certaine taille (150mb). Le script dont j'ai besoin devrait chercher plusieurs dossiers sur différents lecteurs. Par exempleCréer un fichier batch pour supprimer des dossiers d'une certaine taille

supprimer les dossiers sous 150Mo E: temp /, D:/temp, F: temp/

Merci encore pour l'aide. Je ne veux pas perdre votre temps, j'ai cherché partout et j'ai essayé de faire mon propre script mais j'ai échoué.

+1

Montrez le script que vous avez essayé en signe de votre propre effort! – geisterfurz007

+0

Dim objFD Set objFD = CreateObject ("Scripting.FileSystemObject") Set objSelectedFolder = objFD.GetFolder ("I: \ Movies") Set colSubfolders = objSelectedFolder.SubFolders Pour chaque objSubfolder Dans colSubfolders Si objSubfolder.Size <150000000 Puis objSubfolder.Delete True Fin Si Suivant – Alex

+1

Les dossiers n'ont pas de taille, la taille indiquée est une valeur cumulative pour tous les fichiers qu'il contient. Pour cette raison, vous devez reformuler votre question pour indiquer exactement ce que vous avez l'intention de faire lorsque vous ajoutez votre code. – Compo

Répondre

0
@echo off 
set "150mb=157286400" 
set "root_dir=E:\RootDir" 
setlocal enableDelayedExpansion 
:: recursive listing of the folders. 
for /d /r "%root_dir%\" %%# in ("*") do (
    rem echo %%~f# 
    call :getSize %%# 
    rem echo !size! 
    if !size! equ !150mb! (
     echo rd /s /q "%%~f#" 
    ) 
) 



exit /b 0 
:getSize  
    setlocal enableextensions disabledelayedexpansion 

    set "target=%~1" 
    if not defined target set "target=%cd%" 

    set "size=0" 
    for /f "tokens=3,5" %%a in (' 
     dir /a /s /w /-c "%target%" 
     ^| findstr /b /l /c:" " 
    ') do if "%%b"=="" set "size=%%a" 
    endlocal & (
     set size=%size% 
    ) 
fonction

taille du dossier a été volé from here sans vergogne. Attention, en batch pur, vous pouvez obtenir la taille du fichier/dossier uniquement dans les piqûres - la taille est codée en dur au début du script mais vous pouvez le changer. Sur cette ligne echo rd "%%~f#" le dossier cible est seulement répercuté. Vous devrez supprimer le echo pour le faire fonctionner.

+0

merci pour votre aide npocmaka, je dois apprendre le langage par lots mal .. il est si utile. – Alex