用于比较两个目录并排除某些文件的Powershell脚本

用于比较两个目录并排除某些文件的Powershell脚本,powershell,Powershell,简短的是,我有两个外部硬盘驱动器(标记为T:和V:)以及我的主SSD;我严格地将T:用于媒体存储,而V:应该只是它的镜像备份。一个转折点是,在观看视频后,我在T:上稍微修改了某些文件名,方法是在其前面放一个散列(表示我正在观看列表中的哪个视频)。示例:1。飞行员#2。表演,3。游戏看EP2,它变成:1。飞行员,2。秀#3。游戏 我现在有非常弱的,无用的代码,对不起。我对Powershell还比较陌生,我不想让任何人把夏天的时间都浪费在这上面,但有什么建议可以让我继续吗?实际上,我关注的是99%可

简短的是,我有两个外部硬盘驱动器(标记为T:和V:)以及我的主SSD;我严格地将T:用于媒体存储,而V:应该只是它的镜像备份。一个转折点是,在观看视频后,我在T:上稍微修改了某些文件名,方法是在其前面放一个散列(表示我正在观看列表中的哪个视频)。示例:1。飞行员#2。表演,3。游戏看EP2,它变成:1。飞行员,2。秀#3。游戏

我现在有非常弱的,无用的代码,对不起。我对Powershell还比较陌生,我不想让任何人把夏天的时间都浪费在这上面,但有什么建议可以让我继续吗?实际上,我关注的是99%可比文件的任何排除/忽略规定;i、 e.#2。显示VS2。Show(我知道左/右函数的计数,但似乎无法使其按我希望的方式工作)

谢谢你,很抱歉你问得这么糊涂

代码atm:gci-recurse-path C:\V\TV,C:\T | Where对象{$\.name类似“*.txt*”}| Group-noelement | Where{$\.count-eq 1}|排序对象-属性名称

`计数名称



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

$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中进行一些筛选来缩小比较范围

编辑

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

Get-ChildItem -Recurse -Path T:,V: | %{ $_.Name.TrimStart('#') } | Sort-Object -Unique

代码的哪一部分没有按预期工作?呸,我的帖子格式错误。。。等等,它并没有坏到我找不到合适的过滤器的程度。我已经用一堆txt文件设置了虚拟T和V文件。这是我的代码和它的输出,我想要的是排除所有这些文件,因为它们都是“相同”的文件,只需输入散列即可
gci-recurse-path C:\V\TV,C:\T | Where对象{$$\.name-like“*.txt*”}组-noelement | Where{$$\.count-eq 1}排序对象-属性名
1#再见-复制(20.txt)1#再见-复制(6.txt 1#你好-复制(21.txt)1#你好-复制(7.1#再见-复制(6.txt).txt
@user2567649将其放入您的问题中。你可以在那里格式化代码。对不起,在这个论坛上,frickin的格式设置一点也不好!如果你能读懂代码,以“-PropertyName”结尾,输出是一个格式化的列表,在那里你可以看到几乎重复的内容。@wannabeprogrammer-谢谢,但这不是我要找的。我使用了compare对象,它不适合任何条件。如果我可以在OP中的代码的基础上使用某种命令来排除列出的那些基本上重复的文件,比如一个字符不同(左边的散列)…以最简单的形式,如果内容有两行,并且最后10个字符(例如)相同,那么在脚本中创建异常的cmdlet是什么?所以如果你有1。测试视频文件和#1。在测试视频文件中,该规定将排除输出中出现的任一项,因为最后10个字符完全相同。跟$str有关吗?我觉得我以前学过这个,但我还是逃避了!!
Get-ChildItem -Recurse -Path T:,V: | %{ $_.Name.TrimStart('#') } | Sort-Object -Unique