使用Powershell和RegEx将文件移动到文件夹
我编写了以下脚本,根据杂志的标题(第一个连字符之前的所有内容)将文件批处理到文件夹中:使用Powershell和RegEx将文件移动到文件夹,powershell,Powershell,我编写了以下脚本,根据杂志的标题(第一个连字符之前的所有内容)将文件批处理到文件夹中: 杂志标题-年-月.pdfeg国家地理-2017-07.pdf 运行脚本后,杂志将从父文件夹移动到新的子文件夹,在本例中为“国家地理杂志” 三个相关问题: 即使没有“孤立项”,也会创建“孤立项”文件夹(第38行) 将其归档以供以后手动处理。如何制作文件夹 创造条件 重复文件会在处理过程中创建错误消息。随着脚本继续运行,这没什么大不了的,但我想用处理“孤儿”的方法处理重复项,使用一个新的“_duplicates”
杂志标题-年-月.pdf
eg国家地理-2017-07.pdf
运行脚本后,杂志将从父文件夹移动到新的子文件夹,在本例中为“国家地理杂志”
三个相关问题:
Q1:我在我的机器上用遵循相同命名方案的PDF测试了你的脚本,它没有创建孤儿文件夹或移动我的孤儿PDF。我注意到您在foreach之后立即有一个if($\u.BaseName-match$Regex)。里面是你寻找孤儿的地方,但是孤儿不会进入这个if块,因为他们与正则表达式不匹配。在伪代码中,您的结构应该类似于:
foreach{
if (match)
{$childpath $_.BaseName -replace $Regex}
else
{Childpath = $Orphans}
Create your folders and do your moves.
}
问题2:尝试,捕捉块:
问题3:您可以通过成对地将多行括起来对它们进行注释
Q1:我在我的机器上测试了你的脚本,使用的PDF遵循相同的命名方案,它没有创建孤儿文件夹或移动我的孤儿PDF。我注意到您在foreach之后立即有一个if($\u.BaseName-match$Regex)。里面是你寻找孤儿的地方,但是孤儿不会进入这个if块,因为他们与正则表达式不匹配。在伪代码中,您的结构应该类似于:
foreach{
if (match)
{$childpath $_.BaseName -replace $Regex}
else
{Childpath = $Orphans}
Create your folders and do your moves.
}
问题2:尝试,捕捉块:
问题3:您可以通过成对地将多行括起来对它们进行注释
多行注释可以像这样包装在
中
多行注释可以像这样包装在
中
<#
How to use an array of values for the delimiters in the regex instead of literals
My proposed code, but I am missing how to use the delims in the regex match
$delims = "\s-\s" ",\s"\s and\s"
#>