使用 powershell 将子文件夹内容向上移动一级;不同的父文件夹
Using powershell to move sub-folder contents up one level; different parent folders
我查看了有关 SO 的各种问题,但无法使脚本运行。 Powershell 的新手,我相信这很容易 - 任何帮助都会很棒
我有一个包含 170 个文件夹的目录结构:
G:\Data\
folder1\
DCIM1\*jpgs
DCIM2\*jpgs
folder2\
DCIM1\*jpgs
DCIM2\*jpgs
我想将每个 DCIM 子文件夹中的所有 jpg 移动到上一级父文件夹中:
G:\Data\
folder1\*jpgs
folder2\*jpgs
每个父文件夹都有不同的名称,DCIM 子文件夹的名称也可能不同,但所有 jpg 文件都以其文件夹前缀命名(例如,DCIM1_001.jpg)。
我试过Powershell:
G:\> $files = Get-ChildItem "G:\data"
>> Get-ChildItem $files | Move-Item -Destination { $_.Directory.Parent.FullName }
>> $files | Remove-Item -Recurse
但获取目的地为空错误。我也试过通配符:
G:\> $files = Get-ChildItem "G:\data\*"
>> Get-ChildItem $files | Move-Item -Destination { $_.Directory.Parent.FullName }
>> $files | Remove-Item -Recurse
但我认为我完全错了。我错过了什么?
您可以使用Split-Path
获取父目录:
$JPGs = Get-ChildItem -Path "C:\brief\datefolder" -Recurse -Filter "*.jpg"
foreach ($JPG in $JPGs) {
$Parent_Directory = Split-Path -Path $JPG.FullName -Parent
$Destination_Path = Split-Path -Path $Parent_Directory -Parent
Move-Item -Path $JPG.FullName -Destination $Destination_Path
if ($null -eq (Get-ChildItem -Path $Parent_Directory)) {
Remove-Item -Path $Parent_Directory
}
}
只是一种将其赋值给变量并沿线移动的方法。
我查看了有关 SO 的各种问题,但无法使脚本运行。 Powershell 的新手,我相信这很容易 - 任何帮助都会很棒
我有一个包含 170 个文件夹的目录结构:
G:\Data\
folder1\
DCIM1\*jpgs
DCIM2\*jpgs
folder2\
DCIM1\*jpgs
DCIM2\*jpgs
我想将每个 DCIM 子文件夹中的所有 jpg 移动到上一级父文件夹中:
G:\Data\
folder1\*jpgs
folder2\*jpgs
每个父文件夹都有不同的名称,DCIM 子文件夹的名称也可能不同,但所有 jpg 文件都以其文件夹前缀命名(例如,DCIM1_001.jpg)。
我试过Powershell:
G:\> $files = Get-ChildItem "G:\data"
>> Get-ChildItem $files | Move-Item -Destination { $_.Directory.Parent.FullName }
>> $files | Remove-Item -Recurse
但获取目的地为空错误。我也试过通配符:
G:\> $files = Get-ChildItem "G:\data\*"
>> Get-ChildItem $files | Move-Item -Destination { $_.Directory.Parent.FullName }
>> $files | Remove-Item -Recurse
但我认为我完全错了。我错过了什么?
您可以使用Split-Path
获取父目录:
$JPGs = Get-ChildItem -Path "C:\brief\datefolder" -Recurse -Filter "*.jpg"
foreach ($JPG in $JPGs) {
$Parent_Directory = Split-Path -Path $JPG.FullName -Parent
$Destination_Path = Split-Path -Path $Parent_Directory -Parent
Move-Item -Path $JPG.FullName -Destination $Destination_Path
if ($null -eq (Get-ChildItem -Path $Parent_Directory)) {
Remove-Item -Path $Parent_Directory
}
}
只是一种将其赋值给变量并沿线移动的方法。