2014-11-21 50 views
0

喜的文件和文件夾都寫一個批處理文件刪除指定位置 一切都很好,但問題是,當不存在這樣的F文件和文件夾:驅動器中機器然後 批處理文件刪除它保存的文件夾的內容。 任何一個幫助,可以修改該批處理文件,並寫了一個條件,請檢查是否該驅動器存在或不存在有問題的批處理文件刪除指定位置

我的批處理文件

set folder="F:\PortalViewState" 
cd /d %folder% 
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q) 

回答

1
pushd "F:\PortalViewState" 2>nul &&(rmdir . /s /q & popd)||(echo Folder not present) 

更改驅動器和Active Directory到目標文件夾,如果沒有失敗,則刪除其中的任何內容(該文件夾不能被刪除,因爲它是活動目錄)並返回到前一個活動目錄

+0

是其工作 能你好心幫我附和/顯示味精如果沒有按驅動器不exsits – 2014-11-21 07:47:22

+0

@ user3567527,消息包括在內。顯示'pushd'命令何時失敗 – 2014-11-21 08:01:23

0
@ECHO Off 
SETLOCAL 
pushd 
set folder="F:\PortalViewState" 
cd /d %folder% 2>nul 
ECHO ERRORLEVEL=%errorlevel% 
IF "%cd%"==%folder% (ECHO Switched to %folder%) ELSE (ECHO failed to switch to %folder%) 
set folder="U:\sourcedir" 
cd /d %folder% 2>nul 
ECHO ERRORLEVEL=%errorlevel% 
IF "%cd%"==%folder% (ECHO Switched to %folder%) ELSE (ECHO failed to switch to %folder%) 
POPD 

GOTO :EOF 

這顯示了你兩種方式。

周邊pushd/popd簡單地保存和恢復我的測試目錄。

的U:\ sourcedir目錄存在我的系統上,所以我得到錯誤級別= 0和switched消息。 F:不存在,所以我得到一個errorlevel = 1和failed消息。

2>nul抑制該錯誤消息時,目標驅動器不存在。

0

你不需要pushd %folder%

閱讀help rd然後,只需

rd /s /q "f:\portalviewstate" 
0

或者,檢查它是否存在與否,並採取相應的行動

if not exist %folder% goto :somepart