如何将非临时文件移动到专用子目录?

时间:2019-05-08 16:32:12

标签: powershell

我需要帮助来构建一个脚本,以遍历当前目录根目录中的每个文件,将其filename.ext与要排除的掩码黑名单(*。!qb,*。parts等)进行比较。使用语法filename\filename.ext

将不匹配的文件发送到其专用目录。

我的旧批处理代码尚不支持Powershell,但可以提供一些清晰的信息。

for %%s in (*.*) do if not "%%~xs"==".!qB" if not "%%~xs"==".parts" (
md "%%~ns" & move "%%s" "%%~ns\")

请帮助我了解替换这些命令所需的命令。

1 个答案:

答案 0 :(得分:1)

注释中的命令略有更改。

gci * -file | ? Extension -notin '.!qb','.parts' | % {md $_.BaseName ;move $_.FullName -Destination ("{0}\" -f $_.BaseName) -force}

更多详细的变体:

Get-ChildItem * -File | 
  Where-Object Extension -notin '.!qb','.parts' | ForEach-Object {
    New-Item  $_.BaseName -ItemType Directory | Out-Null
    Move-Item -LiteralPath $_.FullName -Destination ("{0}\" -f $_.BaseName) -force
  }

运行脚本后的示例树:

> tree /f
A:.
│   filename.!qb
│   filename.parts
│
└───filename
        filename.mkv