gpt4 book ai didi

Powershell - 删除其他目录中存在的文件夹

转载 作者:行者123 更新时间:2023-12-03 08:06:28 32 4
gpt4 key购买 nike

我在“Directory1”中有文件夹,在“Directory2”中有这些文件夹的 zip 文件,zip 名称末尾有“_OK”字样。

目录1:Directory1 1B002955_SML 23_LEAP 1A 版本2 mars2022_2022-03-11T08h00m40s_s603575

目录2:Directory2 1B002955_SML 23_LEAP 1A版本2 mars2022_2022-03-11T08h00m40s_s603575_OK

现在,如果第二个目录中存在相应的 zip,我想删除第一个目录中的文件夹。这两个目录不在同一服务器上。

我考虑过通过删除“_OK”来重命名 Directory2 zip

rename-item $_ $_.Name.Replace("_OK", "")

然后使用比较对象 cmdlet 比较 Directory1 和 Directory2,但我发现它是用于比较指定的属性,而在我的情况下,我只想比较名称

对 powershell 还很陌生,我不确定继续的最佳方法

希望有人能帮忙

谢谢

最佳答案

使用Compare-Object cmdlet 如下,假设:

作为 Get-ChildItem 的输出来电:

Compare-Object -IncludeEqual -PassThru $filesA $filesB -Property { 
$_.BaseName -replace '_OK$'
} | Where-Object SideIndicator -eq == |
Remove-Item -Recurse -Force -WhatIf

注意:-WhatIf common parameter在上面的命令中预览操作。一旦您确定该操作将执行您想要的操作,请删除 -WhatIf

  • -IncludeEqual 使 Compare-Object 也包含比较相同的对象(默认情况下,仅报告不同对象) .

  • -PassThru 导致输出一对匹配对象中的LHS输入对象(默认情况下,仅输出匹配的属性值 em> - 由 -Property 参数定义 - 是输出。)

  • -Property { $_.BaseName -replace '_OK$' } 使用无名 calculated property比较输入对象对;在这种情况下,-replace运算符用于有效地从基本文件名(不带扩展名的文件名)中删除字符串 _OK(如果存在于末尾 ($))。

  • Where-Object SideIndicator -eq == 将输出限制为比较相等的对象,使用 simplified syntax .

  • -Recurse 添加到 Remove-Item确保目标目录非空时不显示确认提示; -Force 确保即使目标目录被隐藏或包含隐藏项目,删除也会成功。

关于Powershell - 删除其他目录中存在的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72186976/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com