移动包含字符串的文件夹并保留文件夹结构

移动包含字符串的文件夹并保留文件夹结构

我有一个F:\音乐包含许多子文件夹的文件夹,其中一些包含 [flac]细绳在他们的文件夹名称中,我喜欢移动所有文件夹及其内容包含 [flac] 字符串,放入新建文件夹尽管保留所有文件夹结构. 有些路径不止一个文件夹。

get-item "F:\Music\*\*[flac]" | 
foreach ($_){
    $oldpath = $_.FullName; 
    $newpath = "F:\Musicflac\"+$_.Parent; 
    robocopy $oldpath $newpath /MOVE /E
}

经过搜索和尝试,我找到了这个 PS 脚本,没有返回任何错误,但也没有结果。我找到了一个类似的主题,但这只在 bash 中有效:移动包含扩展名的文件的文件夹我对 PowerShell 还很陌生。

编辑1:

我也尝试过 Move-Item:

$paths = Get-ChildItem "F:\Music\*\*[flac]" | select fullname | ForEach-Object {$_.fullname}
$destination = "F:\Musicflac\"
foreach ($path in $paths){
    Move-Item $path -Destination $destination
}

也没有任何事情发生,对我来说困难的是:必须包含字符串 [FLAC]保留文件夹结构

编辑2:

你的脚本一开始出现了一些错误,但经过一些调整后我终于得到了结果:

gci "F:\Zandbak\Music\" -directory -recurse -filter '*[flac]*' |
   %{
        #calculate new path
        $newpath = $_.fullname -replace 'Music', 'Musicflac'

        #check if new path excists, if not create it
        if(!(test-path -Path $newpath)){ new-item $newpath -itemType directory }

        #move the directory and its contents to another directory
        Move-Item -Path $_.FullName -Destination $newpath
   }

没有更多错误正确的文件夹在 Musicflac 目录中正在创建!不幸的是文件夹中的文件不会随文件夹一起移动,仅创建空目录

任何建议还移动文件夹内容

编辑3:

目录结构:

F:\Zandbak\Music\A Winged Victory for the Sullen\2011 A winged victory for the sullen
F:\Zandbak\Music\A Winged Victory for the Sullen\2011 A winged victory for the sullen [flac]
F:\Zandbak\Music\A Winged Victory for the Sullen\2011 A winged victory for the sullen\2014 Atomos IXII
F:\Zandbak\Music\A Winged Victory for the Sullen\2011 A winged victory for the sullen\2014 Atomos IXII [FLAC]
F:\Zandbak\Musicflac

答案1

我的声誉还不够好,无法发表评论:D

您是否已确认您已获取项目?单独测试您的 Get-ChildItem 命令以查看它是否返回所需的文件夹?

我建议尝试:

gci "F:\Zandbak\Music" -directory -recurse -filter '*[flac]*' |
   %{
     $newpath = $_.Parent.fullname -replace 'F:\\Zandbak\\Music', 'F:\Zandbak\Musicflac'
     If (!(test-path $newpath))
        {new-item $newpath -itemType directory -whatif}
     Move-Item $_.FullName $newpath -Whatif
   }

如果上述代码的输出表明它将创建并移动正确的文件夹,请从 new-item 和 move-item 中删除“-WhatIf”参数。

基思

相关内容