我想创建一个脚本,它将采用一个父目录,该目录有许多子目录,其中包含文件.使用列表我希望将子目录中的所有文件移动到父目录中. 到目前为止,我已经创建了以下代码,它列出了子目录
到目前为止,我已经创建了以下代码,它列出了子目录中指定类型的所有文件,但我不确定如何大规模移动所有子文件.
Write-host "Please enter source Dir:" $sourceDir = read-host Write-Host "Format to look for with . :" $format = read-host #Write-host "Please enter output Dir:" #$outDir = read-host $Dir = get-childitem -Path $sourceDir -Filter $format -recurse | format-table name $files = $Dir | where {$_.extension -eq "$format"} $files #| format-table name一些东西:
>您可以将写入的文本直接传递给读取主机cmdlet,它可以为每个用户输入节省一行.
>根据经验,如果您打算使用命令输出执行更多操作,请勿将其管道格式化为* cmdlet.格式cmdlet生成格式化对象,指示powershell如何在屏幕上显示结果.
>尽量避免将结果分配给变量,如果结果包含大量文件系统,则内存消耗可能会非常高,并且可能会降低性能.
>同样,在性能方面,尝试使用cmdlet参数而不是where-object cmdlet(服务器端过滤与客户端).第一个过滤目标上的对象,而后者仅在到达您的机器后过滤对象.
WhatIf开关将显示哪些文件将被移动.删除它以执行命令.您可能还需要对其进行处理以处理重复的文件名.
$sourceDir = read-host "Please enter source Dir" $format = read-host "Format to look for" Get-ChildItem -Path $sourceDir -Filter $format -Recurse | Move-Item -Destination $sourceDir -Whatif