2017-10-12 5 views
0

이 사이트에서 도움이되는 코드 스 니펫을 가지고 있으며 가능한 경우 다른 방식으로 작동하고 싶습니다.호스트 이름 목록을 통해 C : Users % username % AppData Local의 특정 폴더를 삭제하십시오.

로컬 PC에서 파일을 직접 실행하면 사용자 프로필 폴더를 검색하고 시스템 프로필을 생략하여 불필요한 검색을 피하고 모든 사용자 app 데이터 로컬 폴더에서 지정한 두 개의 폴더를 삭제합니다.

지금해야 할 일은 호스트 이름 목록이있는 네트워크에서 실행하고 그렇게하는 것입니다. 아래는 PC에서 직접 실행 중입니다.

For /F "Skip=1 Delims=" %%A In (
    '"WMIc Path Win32_UserProfile Where (Special!='True') Get LocalPath"' 
    ) Do For /F "Delims= " %%B In ("%%A") Do (
For %%I In (Folder1 Folder_2) Do (If Exist "%%B\AppData\Local\%%I\" (
    RMDIR "%%B\AppData\Local\%%I" /S /Q >nul 2>&1) 
    ) 
) 

내가 갈 있었다하지만 내 제한된 지식을 넘어 점점

for /f "usebackq tokens=*" %%A in ("%~dp0hostnames.txt") do (
    For /F "Skip=1 Delims=" %%A In (
     '"WMIc Path Win32_UserProfile Where (Special!='True') Get LocalPath"' 
     ) Do For /F "Delims= " %%B In ("%%A") Do (
    For %%I In (Folder1 Folder_2) Do (If Exist "\\%%B\C$\AppData\Local\%%I\" (
     RMDIR "\\%%B\C$\AppData\Local\%%I" /S /Q >nul 2>&1) 
     ) 
    ) 

처럼 뭔가를 변경하려면, 내가 delayedexpansion이 필요하고 또한 더 따라 변수 편지에 이동 생각

어떤 도움이 ..thanks

답변

0

이 완전히 안된 감사,하지만 난 당신이 활용할 수 있으리라 믿고있어 -이 : 알파벳이 있지만 어느 방향 몰라 WMIC/Node 옵션 : 여기

@Echo Off 
For /F "UseBackQ Delims=" %%Z In ("%~dp0hostnames.txt" 
) Do For /F "UseBackQ Skip=1 Delims=" %%X In (`WMIC /Node:'%%~Z' Path^ 
Win32_UserProfile Where "Special='False'" Get LocalPath` 
) Do For /F "Delims=" %%Y In ("%%X") Do Call :Sub "%%~Z" %%Y 
Exit/B 

:Sub 
For /F "Tokens=1* Delims=:\" %%V In ("%~2") Do For %%U In (Folder1 Folder_2 
) Do If Exist "\\%~1\%%~V$\%%~W\AppData\Local\%%~U"^ 
RD/S/Q "\\%~1\%%~V$\%%~W\AppData\Local\%%~U" 
GoTo :EOF 
0

은 PowerShell에서 그것을 할 수있는 방법입니다. 올바른 디렉터리가 제거 될 것으로 확신하면 Remove-Item 명령에서 -WhatIf 스위치를 제거하십시오.

$dirlist = 'dir1', 'dir2' 
$userdirs = (Get-CimInstance -ClassName Win32_UserProfile -Filter "Special=$false").LocalPath 

foreach ($ud in $userdirs) { 
    foreach ($d in $dirlist) { 
     if (Test-Path -Path "$ud\$d") { 
      Remove-Item -Path "$ud\$d" -Recurse -WhatIf 
     } 
    } 
} 

동시에 모든 컴퓨터에서 스크립트를 실행 할 수 Invoke-Command 사용. 이것은 이전 스크립트가 udscan.ps1으로 저장되었다고 가정합니다.

Invoke-Command -ComputerName 'host1', 'host2' -FilePath .\udscan.ps1