2009-10-06 5 views
0

Je suis confronté à une erreur lorsque j'essaie de supprimer un fichier à l'aide d'un fichier séquentiel. Par exemple, disons que le fichier que je veux supprimer est "C: \ test \ a.dll"Suppression d'un fichier à partir d'un fichier de traitement par lots donnant une erreur

Je récupère le dossier "c: \ test" du registre puis j'essaie d'ajouter le nom du fichier en utilisant et de le supprimer en utilisant la commande suivante

del/s% WPINSTDIR% \ a.dll

où je reçois WPINSTDIR de registre et il serait "C: \ test"

mais lorsque je tente d'exécuter le lot fichier je reçois une erreur disant chemin réseau trouvé et c'est la commande qui est exécutée. En réglant une variable de chemin d'environnement, j'ai trouvé que le problème est avec les 2 barres obliques dans "c: \ test" et les guillemets. De toute façon pour contourner ce problème.

Merci

+0

Par 2 slashs, le WPINSTDIR arrive en "C: \\ test" –

Répondre

0

Cela pourrait faire:

set current=%CD% 
CD /d %WPINSTDIR% 
DEL /s a.dll 
CD /d %current% 

EDIT
Edité utiliser CD /d et le "%CD% -trick".

+0

Fonctionne uniquement si le lecteur actuel est égal au lecteur dans% WPINSTDIR%. –

+0

Hm. Vrai. N'a pas considéré que ... –

+0

Frank: Vous pouvez utiliser 'cd/d' alors. – Joey

0

Vous pouvez supprimer des guillemets autour de votre variable d'environnement avec les éléments suivants:

%WPINSTDIR:"=% 

donc ce qui suit pourrait fonctionner:

del %WPINSTDIR:"=%\a.dll 

Il échouera, cependant, si le chemin contient des espaces.

Vous pouvez également utiliser les éléments suivants:

call :del_file %WPINSTDIR% a.dll 
goto :eof 
:del_file 
del "%~1\%~2" 
goto :eof 

qui devrait fonctionner même avec des chemins contenant des espaces. Le ~ en %~1 supprime les guillemets environnants.

3

Essayez d'utiliser

pushd %WPINSTDIR% 
del /s a.dll 
popd 

Ceci restaure l'ancien répertoire.

+0

J'ai juste essayé ceci et cela semble fonctionner. Besoin de vérifier tous les scénarios. Merci beaucoup à tous. –

Questions connexes