【发布时间】:2021-12-19 02:55:52
【问题描述】:
自从我在 POWERSHELL 中寻找一个脚本以来,它允许我检查一个文件夹中文件名的第一部分(前 8 个字符),其中有多个文件,并且只移动到另一个文件夹.
到目前为止,我已经能够隔离文件名的第一部分,但我找不到比较和移动重复文件的方法。
下面是我到现在才意识到的代码
$filelist = Get-ChildItem -Path "C:\TEMP\ORIGIN"
foreach ($file in $fileList)
{
$key = $file.BaseName.Substring(0,8)
#to be sure the filename part is correct
echo $key
}
感谢所有可以帮助我的人
【问题讨论】:
-
那么如果有相同的 8 个字符的文件,把它们移到别处?
-
“双”是什么意思?这是否意味着文件相同? FILE0123_stuff.txt 是否与 FILE0123_stuff2.txt 相同?您如何确定应该移动的其他一 (1) 个文件?文件名前缀(前 8 个字符)在扫描目录之前是否已知,还是所有文件名的前 8 个字符都需要识别?
-
检查
$filelist|Group-Object -Property {$_.basename.Substring(0,8)}|Where-Object Count -gt 1 -
@JosefZ,
Group-Object应该有一个-ErrorAction SilentlyContinue以忽略少于 8 个字符的基本名称。 -
JosefZ 的方法很好,但最好使用
Group-Object -Property {-join $_.BaseName[0..8]}来避免抛出如 lit 所指出的那样。
标签: powershell filenames script