2017-03-20 120 views
-3

我正在尋找一個腳本下運行,從每個USERPROFILE +路徑前刪除文件:USERPROFILE \應用程序數據\微軟\的Windows \ WER \ ReportQueue *腳本刪除文件的每個USERPROFILE

我試圖

Remove-Item "C:\users + \AppData\Local\Microsoft\Windows\WER\ReportQueue\AppCrash*" 

不行。

也試過VBScript中:

Set fso = CreateObject("Scripting.FileSystemObject") 

strOneDrivePath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERPROFILE%") & "\AppData\Local\Microsoft\Windows\WER\ReportQueue\" 
Search strOneDrivePath 

Sub Search(str) 
    Set folder = fso.GetFolder(str) 
    For Each file In folder.Files 
     If file.DateLastModified < (Now() - 3) Then 
      file.Delete True 
     End If 
    Next 

    For Each subFolder In folder.SubFolders 
     Search subFolder.Path 
     If subFolder.Files.Count = 0 Then 
      subFolder.Delete True 
     End If 
    Next 
End Sub 
+0

歡迎來到Stack Overflow!我們是一個幫助程序員和編程愛好者的社區。這就是說,期望你在發佈之前展示你已經完成或嘗試了什麼。這給了我們一些建設。截至目前,這看起來像是一個代碼編寫請求,這是SO的主題。將您的問題分解成各個部分,並分別搜索這些問題的解決方案。然後,如果您仍然有問題,請編輯您的問題以顯示您的工作,以便我們能夠更好地幫助您和社區。 – Matt

+0

您嘗試的命令會查找字面上爲'C:\ users + \ AppData \ Local \ Mic ...'的路徑。您需要枚舉'C:\ Users'的子文件夾,並將其餘路徑加入這些基本路徑。 –

回答

0
$paths = Get-ChildItem -Directory c:\users | Select-Object $_.Name 

ForEach ($path in $paths){ 
    If (test-path "c:\users\$path\AppData\Local\Microsoft\Windows\WER\ReportQueue\AppCrash") 
    { 
     Remove-Item -Path "c:\users\$path\AppData\Local\Microsoft\Windows\WER\ReportQueue\AppCrash\*" -Force 

    } 
} 
+0

你能解釋一下你的答案,而不僅僅是發佈代碼嗎?也請格式化代碼(縮進4個空格或使用'{}'按鈕)。 – Robert

0

您可以使用Get-ChildItem-Directory參數去獲得℃以內的子目錄:\用戶,然後與孩子路徑加入自己的路徑($_.FullName)你想。

然後用Test-PathRemove-Item刪除你想要的文件。

$path = "C:\Users" 
$child_path = "AppData\Local\Microsoft\Windows\WER\ReportQueue" 
$files_filter = "AppCrash*" 

Get-ChildItem $path -Directory -Exclude Default*,Public | foreach { 

    $joined_path = Join-Path -Path $_.FullName -ChildPath $child_path 
    If (test-path $joined_path) { 
     Remove-Item "$joined_path\$files_filter" -Force 
    } 
}