好的,你在正确的道路上整个RegEx标签在这里。我所做的是查找所有内容,直到最后一个反斜杠,然后捕获5个数字,然后是所有不是反斜线的行,直到行尾,并且只返回捕获的组。我将其设置为变量$ItemNumber
,并将其用于目的地。我在ForEach循环中运行目标源文件夹中的所有内容。这里是我结束了代码:
ForEach($File in (GCI "X:\Property Files\*.PDF")){
$ItemNumber = $File.Fullname -replace ".+?\\(\d{5})[^\\]*$", "`$1"
move-item -path X:\"Property Files"\05165*.pdf -destination X:\"Property Files"\"* -- $ItemNumber"
}
你可以做到这一点通过管如果你想,像这样:
GCI "X:\Property Files\*.PDF"|%{move-item -path X:\"Property Files"\05165*.pdf -destination X:\"Property Files"\"* -- $($_.Fullname -replace ".+?\\(\d{5})[^\\]*$", "`$1")"}
但是得到那种长,有的人真的不就像那么长的一条线。
RegEx可以测试here,再加上它打破了一切。 (链接到regex101.com解释)
非常感谢。它工作完美。我在使用*之前的5位数字前尝试了几个文件,然后让它放到整个目录中,当它测试出来作为工作时,我只把星号放回去,然后回车。我的机器花了大约一个小时,但比以前快了很多。欣赏节省时间。 :-) – user3516394