我有一个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”参数。
基思