2017-08-18 8 views
2

Je suis un aide-enseignant, et mon travail consiste à trier les laboratoires des étudiants dans leurs dossiers. Le format qu'ils tournent dans leurs fichiers est comme ceProgramme par lots pour trier automatiquement les fichiers zip dans des dossiers et les extraire

lastname_Labname.zip

Ce que je veux accomplir est d'avoir automatiquement ces fermetures éclair déplacés dans leurs dossiers dans un endroit différent. Ce qui suit ce format

  • Lastname1
  • Lastname2
  • Lastname3

Enfin, je voudrais les fichiers zip à supprimer après.

Voici ce que j'ai jusqu'à présent:

Pour extraire les fichiers:

FOR /D /r %%F in ("*") DO (
pushd %CD% 
cd %%F 
    FOR %%X in (*.rar *.zip) DO (
     "C:\Program Files\7-zip\7z.exe" x "%%X" 
pause 
    ) 
popd 
) 

Pour trier les fichiers:

@ECHO OFF 
SETLOCAL 
SET "sourcedir=C:\Something\Something" 
SET "destdir=C:Somethign\Something" 
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*.zip" ' 
) DO (
FOR /f "tokens=1delims=_-" %%b IN ("%%a") DO (
    FOR /f "delims=" %%d IN (
    'dir /b /ad "%destdir%\*%%b*" ' 
) DO (
    MOVE "%%a" "%destdir%\%%d\" 

) 
) 
) 

GOTO :EOF 

Je voudrais combiner ces fonctions, et supprime les zips après.

+2

Malheureusement pour vous, ce site n'est pas un service de codage gratuit. Vous devez nous montrer _some_ effort. –

+0

Cela devrait vous y parvenir ... https://ss64.com/nt/for_f.html –

+0

@MattBall - On dirait que du code a été ajouté maintenant. – SomethingDark

Répondre

0

J'ai une configuration similaire.

@Echo OFF 
set Down=E:\Download 
set Extracted=E:\Extracted 

for /R "%Down%" %%I in ("*.zip") do (

    "%ProgramFiles%\7-Zip\7z.exe" x -y "%%~fI" -pPasswordGoesHere 
    Del "%%I" 

) 
FOR %%i IN ("%Down%\*") DO MOVE /Y "%%i" "%Sotred%\%%~nxi" /xf Unzip.bat 
FOR /D %%i IN ("%Down%\*") DO ROBOCOPY /MOVE /E "%%i" "%Sorted%\%%~nxi" /xf Unzip.bat