如何删除Powershell中当前登录用户的特定文件?

时间:2019-04-26 13:59:28

标签: powershell

我有5个要从用户计算机中删除的文件名。路径可以是“ current logged in username\desktopdownloadsdocuments文件夹。

如何将$env:UserName添加到代码中以查看文件是否存在(如果存在)然后删除?感谢您的帮助。谢谢

到目前为止,我已经有了它,但是它不起作用。

If (c:\users\$env:UserName\downloads\text.txt $strFileName){Remove-Item $strFileName}

3 个答案:

答案 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

这将在这些位置中的任何位置找到任何文件,并删除它们(如果存在)。