Команда Rmdir не работает после копирования файла войны с помощью пакета Windows

Я пишу пакетный файл Windows для копирования файла войны. Затем я удаляю каталог, содержащий файл войны, но каталог не исчезает. Смотрите мою команду

  copy D:\target\*.war D:\new_target
  IF exist D:\target (
    rmdir D:\target /s /q
  )

Но моя папка «цель» не может быть удалена. Есть ли какие-либо комментарии для пакетной команды удаления папки. Я использую rd вместо rmdir, но результат тот же. Я использую Windows 7, 64-битную версию.


person Sai Ye Yan Naing Aye    schedule 17.09.2014    source источник
comment
Если папка используется какой-либо программой или если это текущий активный каталог, из которого вы запускаете пакет, папку нельзя удалить, и вы получите сообщение об ошибке the file is in use by another process. Вы получаете какую-либо ошибку?   -  person MC ND    schedule 17.09.2014


Ответы (1)


MC ND скорее всего объяснил причину отказа в удалении. Еще одним было бы отсутствие разрешения на удаление папки с используемой учетной записью пользователя в соответствии с разрешениями NTFS.

@echo off
if exist "D:\target\*.war" (
    cd /D D:\
    copy "D:\target\*.war" "D:\new_target"
    rd "D:\target" /s /q
)

Двойные кавычки используются для всех спецификаций папок/файлов, если ваши настоящие папки содержат 1 или более пробелов.

Пакетный файл устанавливает текущий рабочий каталог в корень диска D: чтобы избежать того, что каталог D:\target является текущим рабочим каталогом интерпретатора командной строки, запускающего этот пакетный файл.

Но исполняемый батник все же не должен храниться в D:\target.

person Mofi    schedule 17.09.2014