我有5个要从用户计算机中删除的文件名。路径可以是“ current logged in username\desktop
或downloads
或documents
文件夹。
如何将$env:UserName
添加到代码中以查看文件是否存在(如果存在)然后删除?感谢您的帮助。谢谢
到目前为止,我已经有了它,但是它不起作用。
If (c:\users\$env:UserName\downloads\text.txt $strFileName){Remove-Item $strFileName}
答案 0 :(得分:0)
您可以使用Test-Path测试文件/文件夹是否存在:
Test-Path -Path 'C:\Users\<UserName>\Desktop\text.txt'
您可以在路径中包含环境变量:
Test-Path -Path "$env:USERPROFILE\Desktop\text.txt"
使用“特殊”文件夹时的另一种技术是.NET GetFolderpath类的Environment方法:
Test-Path -Path "$([Environment]::GetFolderPath('Desktop'))\Text.txt"
在此处查看此方法支持的文件夹的完整列表:Environment.SpecialFolder Enum
因此,要测试并删除文件(存储在$strFileName
中的路径),请执行以下操作:
if(Test-Path -Path $strFileName) {
Remove-Item -Path $strFileName
}
答案 1 :(得分:0)
我不确定您是不是真的是c:\ username \ desktop是$Env:USERNAME
,还是要从用户个人资料中删除$env:USERPROFILE
按照下面的要求删除$UserPath
变量
$FiletoDelete = 'test.txt'
$UserPath = $env:USERNAME
$UserPath = $env:USERPROFILE
$PossibleFoldersPaths = @("Downloads","Documents","Desktop")
$PossibleFoldersPaths | ForEach {
$DeletePath = Join-Path -Path (Join-Path -Path $UserPath -ChildPath $_) -ChildPath $FiletoDelete
If (Test-Path -Path $DeletePath) {
Try {
Remove-Item -Path $DeletePath -ErrorAction Stop
}
Catch {
$_
}
}
Else {
Write-Host "No file found at $DeletePath"
}
}
答案 2 :(得分:0)
使用Get-ChildItem
并将其管道传输到Remove-Item
实际上非常容易。您可以使用内置的$home
变量来指示用户的配置文件路径,并指定要查看桌面,下载文件和文档文件夹中的所有内容。过去,您使用-Include
指定文件名,一切都准备就绪。
$arrFileNames = 'File1.txt','File2.log','File3.exe'
$arrPaths = "$home\Desktop\*","$home\downloads\*","$home\documents\*"
Get-ChildItem -Path $arrPaths -Include $arrFileNames | Remove-Item
这将在这些位置中的任何位置找到任何文件,并删除它们(如果存在)。