是否有一个很好的工具来查找networking共享上的$ RECYCLE.BIN文件夹及其大小?
在我们的环境中,我们使用漫游configuration文件和文件夹redirect来存储用户configuration文件/数据。 用户通常懒得清理回收站,所以我们的networking共享已经满了。
我已经使用PowerShell脚本尝试过它,但经常失败或超时。
感谢您的任何build议。
最好。
一个非常肮脏的命令提示单线可能是:
FOR /d /r "D:\" %A IN ($RECYCLE.BIN) DO @IF EXIST "%~A" ECHO %~A & ROBOCOPY /l /s /nfl /fp /np /ndl /nfl /njh /r:0 "%~A" "%~A"
(将"D:\"replace为search的根path)。
ROBOCOPY的总结会给你一个合理的尺寸指标在其“跳过”列。
另一个非常脏的单行,这次扫描一系列服务器上的所有可能的驱动器号:
FOR %S IN (SERVER1 SERVER2 SERVER3) DO @FOR %D IN (A$ B$ C$ D$ E$ F$ G$ H$ I$ J$ K$ L$ M$ N$ O$ P$ Q$ R$ S$ T$ U$ V$ W$ X$ Y$ Z$) DO @IF EXIST "\\%~S\%~D\$RECYCLE.BIN" ECHO. & ECHO. & ECHO \\%~S\%~D\$RECYCLE.BIN & ROBOCOPY /l /s /nfl /fp /np /ndl /nfl /njh /r:0 "\\%~S\%~D\$RECYCLE.BIN" "\\%~S\%~D\$RECYCLE.BIN"
当然,如果在batch filescanbins.cmd得到这样一个单行变得scanbins.cmd的点,那么:
@ECHO OFF VERIFY OTHER 2>nul SETLOCAL ENABLEEXTENSIONS IF ERRORLEVEL 1 ECHO Unable to enable extensions & GOTO :loop_end SET ROBO="%WINDIR%\system32\robocopy.exe" /l /s /nfl /fp /np /ndl /nfl /njh /r:0 SET FIND="%WINDIR%\system32\find.exe" /i SET DISKS=A$ B$ C$ D$ E$ F$ G$ H$ I$ J$ K$ L$ M$ N$ O$ P$ Q$ R$ S$ T$ U$ V$ W$ X$ Y$ Z$ :loop_start IF "{%1}"=="{}" GOTO :loop_end FOR %%D IN (%DISKS%) DO ( SET BIN_PATH=\\%~1\%%~D\$RECYCLE.BIN IF EXIST "!BIN_PATH!\.\*" ( FOR /f "useback tokens=*" %%F IN (`dir /a:d /b "!BIN_PATH!"`) DO ( SET USER_BIN_PATH=!BIN_PATH!\%%~nxF IF EXIST "!USER_BIN_PATH!\.\*" ( ECHO. ECHO !USER_BIN_PATH! %ROBO% !USER_BIN_PATH! !USER_BIN_PATH! | %FIND% " : " | %FIND% /v "Ended" | %FIND% /v "Times" ) ) ) ) SHIFT GOTO :loop_start :loop_end ENDLOCAL GOTO :EOF
…您可以调用scanbins.cmd SERVER1 SERVER2 SERVER3
谢谢你的答案。 我发现一个更短,在我看来更优雅的方式来find“$ RECYCLE.BIN”在networking共享或本地目录上使用Windows PowerShellrecursion:
Get-ChildItem \\server\share -Directory -Hidden -Filter '$REC*' -Recurse | ft Name,FullName
或者您只需将光盘放入要开始search的根目录即可:
cd C:\Directory Get-ChildItem -Directory -Hidden -Filter '$REC*' -Recurse | ft Name,FullName
如果你还想显示$ RECYCLE.BIN文件夹的大小,你可以使用这个更复杂一点的命令:
Get-ChildItem \\server\share\some\path -Directory -Hidden -Filter '$REC*' -Recurse | Select-Object Name,FullName,@{l="Size in MB";e={"{0:N2}" -f ((Get-ChildItem $_.FullName -Force | Measure-Object -Property length -sum).sum / 1MB)}}
或更短:
gci \\server\share\some\path -Directory -Hidden -Filter '$REC*' -Recurse | select Name,FullName,@{l="Size in MB";e={"{0:N2}" -f ((gci $_.FullName -Force | measure -Property length -sum).sum / 1MB)}}
(请记住,如果使用“Select-Object”,则只截取指定成员的原始返回对象。)
最好!