Powershell 找到所有带括号的文件吗?

Powershell 找到所有带括号的文件吗?,powershell,Powershell,我最近买了一台新的笔记本电脑,出于某种原因,DropBox决定复制里面的所有东西。我喜欢尽可能经常地教自己一些时髦的东西,这样我就可以更熟练地掌握它,所以我想这可能是一个好时机,但到目前为止,我的运气并不好。我不是一个彻头彻尾的傻瓜,但肯定还是有点像 基本上所有的dupe文件末尾都有一个(1)(例如filename(1).txt)。我能够准确地指出以下情况: gci -recurse | ? { $_.Name -like "*(1)*" } 到目前为止还不错,但是我想将它们移动到一个“dup

我最近买了一台新的笔记本电脑,出于某种原因,DropBox决定复制里面的所有东西。我喜欢尽可能经常地教自己一些时髦的东西,这样我就可以更熟练地掌握它,所以我想这可能是一个好时机,但到目前为止,我的运气并不好。我不是一个彻头彻尾的傻瓜,但肯定还是有点像

基本上所有的dupe文件末尾都有一个(1)(例如filename(1).txt)。我能够准确地指出以下情况:

gci -recurse | ? { $_.Name -like "*(1)*" }
到目前为止还不错,但是我想将它们移动到一个“dups”目录,并保留子文件夹结构。不管出于什么原因,看起来应该很简单,时尚让人觉得超级难。我到处搜索,找到了一些很接近的例子,但它们也包含了一些其他的参数,结果让我很困惑。我相信我追求的是:

*使用上述命令查找项目
*移动项目的管道
*以某种方式包括新项目-项目类型目录-强制
*还要检查该目录是否不存在

目前我有:

$from = "C:\users\xxx\Dropbox"
$to = "C:\Users\xxx\Downloads\DropBox Dupes"
gci | ? { $_.Name -like "*(1)*" } | New-Item -ItemType Directory -Path $to -Force
Move-Item $from $to -Force
有什么建议/帮助/例子吗

谢谢

另外,虽然我已经停止dropbox并尝试了一些不同的文件,但我目前得到了:

Move-Item : Cannot move item because the item at 'C:\users\jkelly.MC\Dropbox' is in use.
At line:2 char:1
+ Move-Item $from $to -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [Move-Item],     PSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.MoveItemCommand

您可以这样做:

$source = "C:\Dropbox"
$destination = "C:\DropboxDupes"
gci .\Dropbox -Recurse -File | ?{ $_.basename -match ".*\(\d+\)$"} | % {

    $destination_filename = $_.fullname.Replace($source, $destination)
    $destination_dir = split-path $destination_filename -Parent
    if(-not (Test-Path $destination_dir -PathType Container)) {
        mkdir $destination_dir | out-null
    }
    move-item $_.fullname $destination_filename
}

它基本上用文件中的目标基本路径替换源基本路径,以保留目录结构。您可以根据自己的需要对其进行微调

只要现在看到这个,谢谢,我会查看它的。我从来都不太擅长正则表达式,但我想我需要蹲下来学习——在我尝试做的各种时髦的事情中不断看到它。