我已经创建了一个脚本来删除指定路径中用户的文件。
我想统一变量,这样就不会用太长的时间。
$folder = "C:\Users\$env:USERNAME\*"
$folder2 = "C:\Users\$env:USERNAME\Desktop\*"
$folder3 = "C:\Users\$env:USERNAME\Documents\*"
$folder4 = "C:\Users\$env:USERNAME\Contacts\*"
$folder5 = "C:\Users\$env:USERNAME\Downloads\*"
$folder6 = "C:\Users\$env:USERNAME\Favorites\*"
$folder7 = "C:\Users\$env:USERNAME\links\*"
$folder8 = "C:\Users\$env:USERNAME\Music\*"
$folder9 = "C:\Users\$env:USERNAME\OneDrive\*"
$folder10 = "C:\Users\$env:USERNAME\Pictures\*"
$folder11 = "C:\Users\$env:USERNAME\Searches\*"
$folder12 = "C:\Users\$env:USERNAME\Videos\*"
If (Test-Path $folder) {
Remove-Item $folder -Exclude AppData,Contacts,Desktop,Documents,Downloads,Favorites,Links,Music,OneDrive,Pictures,Searches,Videos -Force -ErrorAction SilentlyContinue
Remove-Item $folder2 -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item $folder3 -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item $folder4 -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item $folder5 -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item $folder6 -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item $folder7 -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item $folder8 -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item $folder9 -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item $folder10 -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item $folder11 -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item $folder12 -Recurse -Force -ErrorAction SilentlyContinue
}我尝试了以下方法,但不起作用:
$folder = "C:\Users\$env:USERNAME\*"
$folder2 = "C:\Users\$env:USERNAME\Desktop\*"
$folder3 = "C:\Users\$env:USERNAME\Documents\*"
$folder4 = "C:\Users\$env:USERNAME\Contacts\*"
$folder5 = "C:\Users\$env:USERNAME\Downloads\*"
$folder6 = "C:\Users\$env:USERNAME\Favorites\*"
$folder7 = "C:\Users\$env:USERNAME\links\*"
$folder8 = "C:\Users\$env:USERNAME\Music\*"
$folder9 = "C:\Users\$env:USERNAME\OneDrive\*"
$folder10 = "C:\Users\$env:USERNAME\Pictures\*"
$folder11 = "C:\Users\$env:USERNAME\Searches\*"
$folder12 = "C:\Users\$env:USERNAME\Videos\*"
If (Test-Path $folder) {
Remove-Item $folder -Exclude AppData,Contacts,Desktop,Documents,Downloads,Favorites,Links,Music,OneDrive,Pictures,Searches,Videos -Force -ErrorAction SilentlyContinue
Remove-Item $folder2 + $folder3 + $folder4 + $folder5 + $folder6 + $folder7 + $folder8 + $folder9 + $folder10 + $folder11 + $folder12 -Recurse -Force -ErrorAction SilentlyContinue
}我还希望获得所做工作的日志,例如,如果在路径中找到了文件或文件夹。
非常感谢。
发布于 2020-02-27 18:13:05
如果要一次删除多个项,则Remove-Item的-Path参数接受字符串数组作为输入。
现在,使用语法$folder2 + $folder3创建了一个连接字符串,如:"C:\Users\foo\Desktop\*C:\Users\foo\Desktop\*""。这是Remove-Item所不能处理的。
您可以构建如下路径的字符串数组:
$folder = "C:\Users\$env:USERNAME"
$foldersToRemove = @(
"C:\Users\$env:USERNAME\Desktop",
"C:\Users\$env:USERNAME\Documents",
"C:\Users\$env:USERNAME\Contacts",
"C:\Users\$env:USERNAME\Downloads",
"C:\Users\$env:USERNAME\Favorites",
"C:\Users\$env:USERNAME\links",
"C:\Users\$env:USERNAME\Music",
"C:\Users\$env:USERNAME\OneDrive",
"C:\Users\$env:USERNAME\Pictures",
"C:\Users\$env:USERNAME\Searches",
"C:\Users\$env:USERNAME\Videos")
If (Test-Path $folder) {
Remove-Item $folder -Exclude AppData, Contacts, Desktop, Documents, Downloads, Favorites, Links, Music, OneDrive, Pictures, Searches, Videos -Force -ErrorAction SilentlyContinue
Remove-Item $foldersToRemove -Recurse -Force -ErrorAction SilentlyContinue
}关于你的第二个要求:
-Verbose参数会让Remove-Item告诉你哪些文件夹被删除了。如果您需要在文件中记录日志,您可以像这样重定向详细流:
Remove-Item $foldersToRemove -Recurse -Force -ErrorAction SilentlyContinue -Verbose 4> .\deletedFolders.loghttps://stackoverflow.com/questions/60430480
复制相似问题