完善简单的删除项单行代码

完善简单的删除项单行代码

所以我想升级我的删除项单行代码。我想将主文件路径(\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test)分解为在脚本顶部定义的 2 个变量。类似于:

  1. $rootdir = “\HQDEVAPP004\C$\LoneStar”
  2. $svcdir = {在此处插入服务名称}(即消息路由器、处理器处理程序)

然后创建第三个变量,即完整目录路径,它将 1 + 2 粘合在一起,我知道只需使用“+”运算符即可完成,如果我错了,请纠正我。

我的想法是,最终我将能够运行 foreach 循环来获取并设置 svcdir 路径,动态地将要删除文件的完整目录路径粘合在一起,运行删除过程,然后转到下一个服务的文件夹。我希望我解释得正确。如果碰巧想看看我一直使用的一行代码,我会把它放在下面:

Get-ChildItem -recurse \\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test\*.* | Remove-Item

答案1

首先,Path 和 LiteralPath 属性Remove-Item接受通配符,因此您当前的一行代码已经可以工作,而无需Get-ChildItem

Remove-Item \\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test\*.* -Recurse -Force

关于“粘合在一起”,我建议使用Join-Path格式运算符-f

Join-Path例如(有了这个你就不必担心反斜杠了):

PS C:\> $rootdir = "\\HQDEVAPP004\C$\LoneStar"
PS C:\> $svcdir = "Message Router"
PS C:\> Join-Path $rootdir $svcdir
\\HQDEVAPP004\C$\LoneStar\Message Router

-f示例(请注意,{0}您提供的参数将被放置在那里):

PS C:\> $rootdir = "\\HQDEVAPP004\C$\LoneStar\{0}"
PS C:\> $svcdir = "Message Router"
PS C:\> $rootdir -f $svcdir
\\HQDEVAPP004\C$\LoneStar\Message Router

所以是的,您可以对所有路径进行 foreach 并执行这种粘合操作,但是您也可以直接提供您想要的所有路径,Remove-Item因为它可以处理数组:

cd "\\HQDEVAPP004\C$\LoneStar"
Remove-Item ".\Message Router\*.*",".\SomeOtherPath" -Recurse -Force

相关内容