2011-01-10 51 views
1

我已经写了这个脚本来将文件移动到目标文件夹。看起来我在这里丢失了一些东西,因为当我运行脚本时,它只在当前目录中查找.zqx文件,而不是所有驱动器。请注意,(dir $ paths ..)部分会及时返回.zqx文件列表。如何让PowerShell在移动项目时查找其他文件夹中的文件?

Paths.txt有盘符这样

C:\ 
D:\ 
E:\ 

$paths = get-content paths.txt 
mv (dir $paths -r -fi *.zqx | ?{$_.lastwritetime -lt ($sevendaysold)}) -dest e:\xqz 

回答

6

那么,一个问题你会遇到的是一个计算的文件路径移动的部件仅生产文件名,而不是完整路径。试试这个,看看我说的是:

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

Path参数Move-Item需要键入[string[]]这样的PowerShell的目录表达式的结果转换为字符串数组。不幸的是,System.IO.FileInfo对象基于它们使用IIRC构建的文件名来呈现“ToString()”。

幸运的是修复很简单。 FileInfo对象管道像Move-Item像这样:

dir $paths -r *.zqx | ?{$_.lastwritetime -lt $sevenDaysOld} | mv -dest e:\xqz 
+0

恕我直言,这是关于不一致。命令应该独立产生相同的结果,如何传递参数。我遇到了类似的问题与'选择字符串https://connect.microsoft.com/PowerShell/feedback/details/576354/select-string-behaves-differently-on-how-inputobject-is-passed – stej 2011-01-11 07:04:42

相关问题