Je travaille actuellement à mon premier poste de technicien informatique junior et j'ai des problèmes avec un simple fichier de traitement par lots.Nettoyage de dossier programmé - Fichier de traitement par lots
Essentiellement, le fichier est exécuté chaque semaine via le planificateur de tâches. Il supprime les fichiers et les dossiers d'un répertoire de serveur datant de plus de 8 jours. Il est également censé supprimer les dossiers vides.
forfiles /p "P:\blahblah" /s /m * /d -8 /c "cmd /c del /Q /S /F /A @path"
cd /d P:\blahblah
for /f "usebackq" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"
REM robocopy "P:\blahblah" "P:\blahblah" /s /move"
Il y a deux problèmes ici; Il supprimera occasionnellement des fichiers vieux de quelques jours seulement. Il ne supprime pas les dossiers vides.
Le fichier a été écrit par un ancien employé informatique et il n'y a pas de documentation. Ma conjecture est que plusieurs méthodes ont été utilisées afin d'assurer le nettoyage (ironiquement). J'ai cherché google et voici mes pensées actuelles sur chaque commande ..
1) forfiles - la commande forfiles semble être écrite correctement et je ne vois aucun problème avec elle.
2) cd - assez simple
3) pour - pas tout à fait sûr. Les variables de lot sont nouvelles pour moi et je ne suis pas sûr si cela fonctionne correctement.
4) robocopy - Je n'ai pas été capable de trouver une instance en ligne où quelqu'un copie un répertoire à lui-même pour le nettoyage. Je remarque également la citation supplémentaire, mais je ne suis pas certain de son inexactitude. Cette ligne me semble particulièrement étrange.
Normalement, j'essaierais de tester mon par quelque chose comme ça, mais c'est un peu plus difficile à tester rapidement étant donné que j'ai besoin de voir si c'est enlever des choses en fonction de la date du calendrier. Voilà pourquoi je suis là!
Je promets que je n'aurais pas demandé si je n'avais pas déjà parcouru internet pour une idée. Toute aide serait grandement appréciée, et j'aimerais en apprendre un peu plus sur les commandes ci-dessus!
Merci pour votre aide!
Votre commande FOR échouera car il manque un signe d'insertion pour échapper au PIPE. De plus, la commande FOR devrait vraiment utiliser l'option delims pour le forcer à ne pas utiliser de délimiteurs. Vous ne devriez pas avoir besoin de l'option usebackq non plus. Robocopy ne s'exécute pas car il est commenté avec la commande REM. – Squashman