我编写了这个脚本来将文件移动到目标文件夹。看起来我在这里遗漏了一些东西,因为当我运行脚本时,它只查找当前目录中的.zqx文件而不是所有驱动器。请注意,(dir $ paths ..)部分会立即返回.zqx文件列表。
Paths.txt包含这样的驱动器号
C:\
D:\
E:\
$paths = get-content paths.txt
mv (dir $paths -r -fi *.zqx | ?{$_.lastwritetime -lt ($sevendaysold)}) -dest e:\xqz
答案 0 :(得分:6)
那么,您将遇到的一个问题是,计算要移动的文件路径的部分只生成文件名而不是完整路径。试试这个,看看我在说什么:
$OFS="`n"
"$(dir $paths -r -fi *.zqx | ?{$_.lastwritetime -lt ($sevendaysold)})"
Move-Item
的Path参数采用类型[string[]]
,因此PowerShell会将dir表达式的结果转换为字符串数组。不幸的是,System.IO.FileInfo对象根据它们用IIRC构造的文件名呈现“ToString()”。
幸运的是,修复很容易。将FileInfo对象传递到Move-Item
,如下所示:
dir $paths -r *.zqx | ?{$_.lastwritetime -lt $sevenDaysOld} | mv -dest e:\xqz