2015-12-21 2 views
1

Я пытался скопировать файл из папки, а затем удалить папку. Я использую RoboCopy на окнах 10.Не удается удалить папку после использования RoboCopy

Теперь я понимаю, что могу использовать переключатель/MOVE, но я столкнулся с ошибкой, сделав это первым способом, который я пытался, и я хотел бы выяснить это, знание того, почему это происходит.

У меня есть структура папок так:

ParentFolder 
---->SubFolder 
-------->test.txt 
---->test.bat 

Изнутри ParentFolder Я бегу test.bat, который содержит следующий сценарий

echo off 
setlocal 
set dir="path\to\ParentFolder" 
cd %dir% 
robocopy %dir% %dir%\.. test.txt 
if %ERRORLEVEL% LSS 8 (
    rmdir /s /q "%dir%" 
) 
endlocal 

Копия работает отлично, без Rmdir, файл копии, а старый файл остается в SubFolder. Когда я добавляю строку rmdir, копия все еще работает нормально, старый файл фактически удаляется, но затем, когда он пытается удалить каталог SubFolder, я получаю сообщение об ошибке, что процесс не может получить доступ к файлу, потому что он используется другим процессом.

Так окончательная структура выглядит следующим образом, вместо того ПОДПАПКА удалены:

ParentFolder 
---->SubFolder 
---->test.bat 
---->test.txt 

ответ

0

Попробуйте это:

echo off 
setlocal 
set dir="path\to\ParentFolder" 
cd %dir% 
robocopy %dir% %dir%\.. test.txt 
if %ERRORLEVEL% LSS 8 (
    cd\ 
    rmdir /s /q "%dir%" 
) 
endlocal 

Я думаю, что проблема в том, что вы пытаетесь удалить папку, а внутри Это.

Смотрите этот пример

cd c:\temp\test 
rmdir /s /q c:\temp\test 
cd c:\temp 
rmdir /s /q c:\temp\test 

enter image description here

Как вы можете видеть, что первый rmdir не удалось, но второе удалось.

+1

О, черт возьми. Конечно, это так очевидно! Большое спасибо! – kamcknig