0

简而言之,我有两个外部硬盘驱动器(标记为 T: 和 V:)以及我的主 SSD;我使用 T: 严格用于媒体存储,而 V: 应该只是它的镜像备份。一个转折是我稍微修改了 T 上的某些文件名:在观看视频后,通过在其前面放置一个哈希(以表示我要查看列表中的哪个视频)。示例:1. 飞行员,#2。Show, 3. Game ... 观看第 2 集,它变成:1. Pilot,2. Show,#3。游戏。

我现在有非常弱的,无用的代码,对不起。我对 Powershell 还很陌生,我不希望任何人浪费他们的暑假来做这一切,但是有什么建议可以让我继续前进吗?真的,我专注于对 99% 可比文件的任何类型的排除/忽略规定;即#2。Show vs 2. Show(我知道左/右函数的计数,但似乎无法让它按我想要的方式工作)。

感谢并为这个混乱的问题感到抱歉。

代码自动取款机:gci -recurse -path C:\V\TV, C:\T | Where-Object {$_.name -like "*.txt*"} | Group -noelement | where {$_.count -eq 1} | Sort-Object -Property Name

`计数名称


1 #Goodbye - Copy (20).txt 
1 #Goodbye - Copy (6).txt  
1 #Hello - Copy (21).txt   
1 #Hello - Copy (7).txt    
1 Goodbye - Copy (20).txt  
1 Goodbye - Copy (6).txt   
1 Hello - Copy (21).txt    
1 Hello - Copy (7).txt`
4

1 回答 1

2

如果您只是想知道两者之间有什么区别,您可能想要以下脚本:

$T = Get-ChildItem T: -Recurse
$V = Get-ChildItem V: -Recurse
Compare-Object $T $V

或其紧凑形式:

compare (ls T: -Recurse) (ls V: -Recurse)

请注意,它只会比较在 T: 和 V: 下找到的每个文件,您可以通过 Get-ChildItem cmdlet 中的一些过滤来缩小比较范围。

编辑

从评论更新,以下是仅列出唯一值的脚本,从起始字符中剥离文件名#,使用 TrimStart 方法[String]

Get-ChildItem -Recurse -Path T:,V: | %{ $_.Name.TrimStart('#') } | Sort-Object -Unique
于 2013-07-10T09:26:13.543 回答