2017-05-28 409 views
0

我一直在研究從.txt文件中輸入的位置刪除文件的代碼。批處理文件Rd錯誤:目錄不爲空

@echo off 
cd C:\Users\Troy\Desktop\Details 
set /p loc=<Location.txt 
rd /s /q "%loc%" 
echo %loc% 
pause 

此代碼返回我下面的輸出

The directory is not empty. 
C:\Users\Troy\Downloads\TV Shows  
Press any key to continue ... 

現在文件Location.txt,打開時包含以下
C:\ Users \用戶特洛伊\下載\電視節目是按照我得到的第二行(上述輸出)的回波輸出

另請注意,我已將批處理文件保存在C:\ Users \ Troy \ Desktop
因此沒有理由由於相同的位置造成的任何干擾。

奇怪的部分是當我從另一個批處理文件運行以下代碼在相同的位置運行完美,並刪除所有文件。

@echo off 
set loc=C:\Users\Troy\Downloads\TV Shows 
rd /s /q "%loc%" 
echo %loc% 
pause 

所以兩個代碼之間的唯一區別是,第1臺從一個特定的文件中的變量的位置,而另一個具有一個預先輸入的變量。

而且我已經嘗試使用下面的代碼

@echo off 
cd C:\Users\Troy\Desktop\Details 
set /p loc=<Location.txt 
cd %loc% 
del /s /q * >nul 2>&1 
cd C:\Users\Troy\Desktop\Details 
rd /s /q "%loc%" 
echo %loc% 
pause 

在上面的代碼刪除位置的文件,刪除命令工作完全正常,並刪除的所有文件。但是,文件夾和子文件夾都是剩下的,這意味着rd命令不起作用

我甚至嘗試了attrib -h的事情,但那也行不通。 另外請注意,我已經嘗試過這種方式,也有rmdir /s /q的各種排列和組合。但不起作用。

任何幫助表示讚賞。

+0

確保目錄樹是空的,DIR/B/S/A「%loc%」'如果有什麼東西你不期望看到,那麼我建議你使用更確定的消息'刪除'首先在目錄上執行命令; 'DEL/F/S/Q/A「%loc%\ *」' – Compo

+0

感謝您的回覆。我試着做你所說的話,但結果卻是一樣的。你能否檢查它是否也發生在你的設備上? – x0nar

+0

我很抱歉,但我無意嘗試複製某些我比較無能的東西。然而,我之前看到過這個問題,但仍然沒有真正的原因。當時的解決方案是再次運行該命令,所以在你的'rd'命令嘗試添加一個新行,'如果存在'%loc%\「RD/S/Q」%loc%「''。不理想,但它已經無法解釋地工作。 – Compo

回答

0

您可能會遭受文件系統中的某些損壞。嘗試運行chkdsk /f。您必須重新啓動才能運行它,但請檢查它是否找到可以更正的內容,然後查看問題是否消失。