如何让PowerShell在移动项目时查找其他文件夹中的文件?

时间:2011-01-10 16:16:26

标签: powershell powershell-v2.0

我编写了这个脚本来将文件移动到目标文件夹。看起来我在这里遗漏了一些东西,因为当我运行脚本时,它只查找当前目录中的.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

1 个答案:

答案 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