2010-12-07 7 views
3

Je voulais un doublure pour supprimer tous les fichiers de plus de 14 jours dans certains dossiers.ne peut pas exécuter (erreur 2) lors de l'utilisation de fichiers forfiles

Ceci est ma commande

forfiles -PX: \ logs -s -m * .log -d-14 -c "CMD/C del @file"

mais lorsqu'il est exécuté, il affiche « peut 't s'exécute (erreur 2) "pour chaque fichier trouvé. Si l'option -c "CMD/c del @file" est omise, cela fonctionne correctement et produit une liste de fichiers de plus de 14 jours. J'ai d'abord pensé que cela pourrait être un problème de permission; mais toute action sur le fichier produit le même résultat et je suis administrateur sur le comptuer.

Il s'agit cependant d'un partage réseau si cela fait une différence.

Merci

Répondre

1

Quelle est la valeur de @file, et quel est le répertoire courant lorsque vous utilisez le code?

winerror.h dit que l'erreur 2 est

#define ERROR_FILE_NOT_FOUND    2L 

donc je tenterais bien qualifier votre chemin vers le fichier qui se supprimé.

--edit:

que vous pouvez faire en faisant

forfiles -px:\logs -s -m*.log -d-14 -c"CMD /C del @path" 

au lieu de

forfiles -px:\logs -s -m*.log -d-14 -c"CMD /C del @file" 
+1

Merci j'ai changé la commande à forfiles -PX: \ logs -s -m * .log -d-14 -c "CMD/C del @PATH \ @FILE" qui semblait fonctionner, il semble que ce était cas sentive ainsi que @file n'a pas fonctionné mais @FILE a fait. – Matt

1

J'ai trouvé la réponse à cette:

set DP_DIR=C:\Scripts 

forfiles -p%DP_DIR% -s -m*.exe -d-3 -c"cmd /c del \"@FILE"" 

Cela fonctionne bien.

0

J'utilise forfiles v 1.1 d'Avril 1998.

Dans ma situation, si le @PATH ou @FILE contient un chemin avec un espace en elle, ce ne sera pas traitée correctement. Les chemins avec des espaces nécessitent des guillemets doubles. Comme la commande d'exécution dans forfiles nécessite des guillemets doubles, c'est ce que j'utilise dans mes fichiers batch. Le 0x22 est enregistré dans le fichier batch en guillemets doubles. Je trouve que entourant explicitement le chemin et le fichier avec des guillemets doubles pour un traitement fiable des fichiers.

forfiles -pC:\pictures\ -m*.jpg -d-30 -c"cmd /c echo del [email protected]\@FILE0x22" > c:\temp\delold_pics.bat 

call c:\temp\delold_pics.bat