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

Пиша пакетен файл на Windows за копиране на военен файл. След това премахвам директорията, която съдържа военен файл, но директорията не изчезва. Вижте моята команда

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

Но моята папка "target" не може да се изтрие. Има ли коментари за командата за пакетно изтриване на папка. Използвам 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 или повече интервали.

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

Но въпреки това изпълненият пакетен файл не трябва да се съхранява в D:\target.

person Mofi    schedule 17.09.2014