由于Dreamweaver设置混乱,我们的网站dev& amp中已经出现了数千个“_notes”文件夹。 qa地区。通过Windows资源管理器删除太多 - 一切都只是锁定 - 所以我希望运行一个批处理脚本来为我们一劳永逸地解决它。问题是我不完全确定“rd / S”会做我想做的事。
我的理解是rd / S会在我告诉它的文件夹中递归查看,所以如果我说:
rd /S r:/<siteName>/_notes/
然后它只会查看_notes文件夹并删除其中的内容,然后尝试进一步向下移动该树。我需要的是一个会考虑以下内容的脚本:
r:/<siteName>/_notes/
r:/<siteName/<someFolder>/_notes/
r:/<siteName/<someOtherFolder>/_notes/
r:/<siteName/<someFolder>/<someSubFolder>/_notes/
r:/<siteName/<someFolder>/<iThinkIveMadeMyPoint>/_notes/
希望我有道理......
我在另一个帖子中发现了这个,但它不能用于带有文件夹的文件夹。在名称中,所以它对网站名称没用...
@Echo OFF
REM Important that Delayed Expansion is Enabled
setlocal enabledelayedexpansion
REM This sets what folder the batch is looking for and the root in which it starts the search:
set /p foldername=Please enter the foldername you want to delete:
set /p root=Please enter the root directory (ex: C:\TestFolder)
REM Checks each directory in the given root
FOR /R %root% %%A IN (.) DO (
if '%%A'=='' goto end
REM Correctly parses info for executing the loop and RM functions
set dir="%%A"
set dir=!dir:.=!
set directory=%%A
set directory=!directory::=!
set directory=!directory:\=;!
REM Checks each directory
for /f "tokens=* delims=;" %%P in ("!directory!") do call :loop %%P)
REM After each directory is checked the batch will allow you to see folders deleted.
:end
pause
endlocal
exit
REM This loop checks each folder inside the directory for the specified folder name. This allows you to check multiple nested directories.
:loop
if '%1'=='' goto endloop
if '%1'=='%foldername%' (
rd /S /Q !dir!
echo !dir! was deleted.
)
SHIFT
goto :loop
:endloop
答案 0 :(得分:2)
阅读HELP FOR
,HELP SET
和HELP IF
请注意FOR /D /R
将以递归方式遍历目录树。
另请注意,%~na
是提取完整路径的名称部分的有趣语法。
所以,把这些小块放到一边,在命令行上尝试这个命令
for /d /r %a in (*) do @if %~na==_notes @echo rd %a
仔细测试后,删除echo
命令。
答案 1 :(得分:0)
这个命令对我有用,我希望这可以有所帮助。切换到公共根文件夹,然后键入CMD:
for /d /r . %d in (<folder name>) do @if exist "%d" rd /s/q "%d"
更改为要删除的文件夹的名称。然后将删除具有此名称的所有子文件夹。