当前位置 : 主页 > 手机开发 > 无线 >

Powershell,Mass移动某种类型的文件

来源:互联网 收集:自由互联 发布时间:2021-06-11
我想创建一个脚本,它将采用一个父目录,该目录有许多子目录,其中包含文件.使用列表我希望将子目录中的所有文件移动到父目录中. 到目前为止,我已经创建了以下代码,它列出了子目录
我想创建一个脚本,它将采用一个父目录,该目录有许多子目录,其中包含文件.使用列表我希望将子目录中的所有文件移动到父目录中.

到目前为止,我已经创建了以下代码,它列出了子目录中指定类型的所有文件,但我不确定如何大规模移动所有子文件.

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
网友评论