Удаление файла из пакетного файла с ошибкой - PullRequest
0 голосов
/ 06 октября 2009

Я сталкиваюсь с ошибкой при попытке удалить файл с помощью командного файла. Например, скажем, файл, который я хочу удалить, это «C: \ test \ a.dll»

я получаю папку «c: \ test» из реестра, а затем пытаюсь добавить имя файла с помощью и удалить его с помощью следующей команды

del / s% WPINSTDIR% \ a.dll

где я получаю WPINSTDIR из реестра, и это будет "C: \ test"

однако, когда я пытаюсь запустить командный файл, я получаю сообщение об ошибке, указывающее, что сетевой путь найден и это команда, которая выполняется. del / s "c: \ test" \ a.dll

Установив переменную пути окружения, я обнаружил, что проблема заключается в 2 слешах в "c: \ test" и кавычках. В любом случае, чтобы обойти эту проблему.

Спасибо

Ответы [ 3 ]

3 голосов
/ 06 октября 2009

Попробуйте использовать

pushd %WPINSTDIR%
del /s a.dll
popd

Это восстанавливает прежний каталог.

0 голосов
/ 06 октября 2009

Вы можете удалить кавычки вокруг переменной окружения следующим образом:

%WPINSTDIR:"=%

Таким образом, может работать следующее:

del %WPINSTDIR:"=%\a.dll

Однако произойдет сбой, если путь содержит пробелы.

Вы также можете использовать следующее:

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

, который должен работать даже с путями, содержащими пробелы. ~ в %~1 удаляет окружающие кавычки.

0 голосов
/ 06 октября 2009

Это может сделать:

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

EDIT
Отредактировано для использования CD /d и "%CD% -трюка".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...