使用 RoboCopy 后无法删除文件夹

Can't delete folder after using RoboCopy

我试图从文件夹中复制一个文件,然后删除该文件夹。我在 windows 10.

上使用 RoboCopy

现在我意识到我可以使用 /MOVE 开关,但是我 运行 在我尝试的第一种方法中出错,我想弄清楚为什么它正在发生。

我的文件夹结构如下:

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

从 ParentFolder I 运行 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,文件复制并且旧文件留在子文件夹中。当我添加 rmdir 行时,副本仍然可以正常工作,旧文件实际上被删除了,但是当它试图删除 SubFolder 目录时,我得到一个错误,该进程无法访问该文件,因为它正在被另一个进程使用。

所以最终结构看起来像这样,而不是删除 SubFolder:

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

试试这个:

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

如您所见,第一个 rmdir 失败但第二个成功。