CMD 또는 Powershell을 사용하여 파일/디렉터리를 대량 삭제할 수 있지만 더 빠른 옵션이 있습니다.
스크립트 C가 더 빠를 것입니다
Cd /d “%USERPROFILE%\AppData\Local\Temp\” rd /s /q.
이렇게 하면 명령 프롬프트 버전에 있는 for 루프의 추가 열거가 제거됩니다. 현재 있는 폴더를 삭제할 수 없기 때문에 마지막에 오류가 발생합니다. 파일 경로를 문자열로 작성하는 기본 cmdlet이 없기 때문에 파일 개체를 작성해야 하기 때문에 명령 프롬프트는 항상 powershell cmdlet보다 빠릅니다. . 파일 크기, 생성 날짜 등과 같은 추가 정보를 가져오고 해당 객체를 생성하는 데 시간이 걸립니다. 파일 개수가 5자리 이상이면 확실히 차이가 납니다. 매일 삭제/보관이 필요한 폴더와 파일을 상위 6자리, 하위 7자리로 유지 관리하는 데 사용하는데, 이것이 일반적으로 가장 빠른 삭제 솔루션이었습니다.
레딧 사용자
에 대한 스크립트 블록에 모든 것을 넣지 않으면
Measure-Command
모르겠습니다.나는 당신이 제공한 디렉토리가
$env:TEMP
또는%TEMP%
99%의 경우.%LOCALAPPDATA%
또는 에 위치해 있습니다$env:LOCALAPPDATA
.또한 get-childitem이 필요하지 않다는 것도 알고 있습니다. 넌 그냥
Remove-Item "$($env:TEMP)\*"-Recurse -Force
또는del /f /s /q %TEMP%
또한 /s는 모든 하위 디렉터리를 관리하므로 봇 명령 및 루프와 동일한 작업을 수행하는 데 하나의 명령만 필요하지 않습니다.
레딧 사용자
나는 몇 년 전에 스크립트에서 일부 거대한 폴더(12Gb, 75k 파일, 7k 폴더)를 삭제하는 방법을 살펴보고 이 닷넷 호출을 결정했습니다.
[System.IO.Directory]::Delete($Folder.Fullname, $true)
로컬로 열거되지 않으므로 원격 시스템에서는 빠릅니다. 귀하의 사용 사례에 어떻게 맞는지 잘 모르겠습니다. 기본 폴더를 삭제합니다. 이를 다시 만들 수도 있고, 사용할 때 자동으로 생성될 수도 있습니다. 또한 임시 폴더에는 열린 파일이 있을 수 있지만 거기서 무슨 일이 일어나는지는 확실하지 않습니다.
레딧 사용자
/mir를 사용하여 robocopy를 사용할 때는 매우 주의하세요. 내 범죄 파트너가 몇 주 동안 진행된 일정에 따라 어느 날 대규모 프로덕션 파일 서버를 새 집으로 미러링하는 것을 목격했습니다. 그는 새 집으로 전환하고 소스를 삭제했습니다. Robocopy는 모든 제작물을 즉시 삭제했습니다. 그는 무슨 일이 일어났는지 깨닫고 내 눈앞에서 하얗게 변했다. 다행스럽게도 쉐도우 복사본이 실행되고 있었습니다. 내가 본 것 중 가장 빠른 주요 회복. 5분 이내로 모든 생산이 재개되었습니다. 우리는 다시는 이에 대해 이야기하지 않았습니다. 하지만 나는 robocopy와 /mir 스위치를 매우 조심스럽게 사용합니다.
레딧 사용자
파일/폴더를 대량 삭제하는 가장 빠른 방법은 cmd.exe를 사용하여 실행할 수 있는 robocopy입니다(실행 시간은 2~2초 더 빨라질 수 있지만 실행 시간은 동일함).
mkdir “%USERPROFILE%\empty” robocopy “%USERPROFILE%\empty” “%USERPROFILE%\AppData\Local\Temp” /mir rmdir “%USERPROFILE%\empty”
또는 여기에서는 PowerShell이 필요한 것처럼 들리지 않지만 powershell.exe 또는 pwsh.exe를 사용하여 실행합니다.
mkdir “$ENV:USERPROFILE\empty” & robocopy “$ENV:USERPROFILE\empty” “$ENV:USERPROFILE\AppData\Local\Temp” /mir rmdir “$ENV:USERPROFILE\empty”
이제 사용 중인 파일로 인해 여기서 문제가 발생할 수 있습니다.
레딧 사용자
Get-ChildItem -경로 “$env:USERPROFILE\AppData\Local\Temp” -Force | Remove-Item -Force -Recurse -ErrorAction 자동으로 계속
레딧 사용자
del /f /s /q “%USERPROFILE%\AppData\Local\Temp\*.*” >nul 2>&1
for /d %%x in (“%USERPROFILE%\AppData\Local\Temp*.*”) do @rd /s /q “%%x”
CMD 스크립트 또는 PowerShell 스크립트: 대량 파일/디렉터리 삭제 시 어느 것이 더 빠릅니까? PowerShell 의 u/castiel3125 작성
답글 남기기