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

Ani*_*esh 1 powershell powershell-2.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
Run Code Online (Sandbox Code Playgroud)

Kei*_*ill 6

那么,您将遇到的一个问题是,计算要移动的文件路径的部分只生成文件名而不是完整路径.试试这个,看看我在说什么:

$OFS="`n"
"$(dir $paths -r -fi *.zqx | ?{$_.lastwritetime -lt ($sevendaysold)})"
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)