PowerShell脚本优化:如何在$_.Name目录下创建2022子文件夹?
修改PowerShell脚本以在分组目录内创建2022子目录
你只需要调整ForEach块中的逻辑,先拼接出包含2022子目录的目标路径,递归创建目录后再移动文件即可。以下是修改后的完整脚本:
Get-ChildItem *_*_JDO_*_*.* | Where BaseName -match '\d{6}_\d{6}_JDO_(\d{4})_\d{3}'| Group {$Matches[1]}| ForEach { # 拼接主目录($_.Name)下的2022子目录路径 $targetSubDir = Join-Path -Path $_.Name -ChildPath "2022" # 递归创建目录(若主目录不存在会自动创建,已存在则不报错) New-Item -Path $targetSubDir -ItemType Directory -Force # 将文件移动到2022子目录中 $_.Group | Move-Item -Destination $targetSubDir }
关键修改说明:
Join-Path:安全拼接主目录和子目录路径,避免手动拼接字符串时出现路径分隔符错误New-Item -Force:确保目录层级(主目录+2022子目录)存在,即使主目录尚未创建也会自动生成,已存在的目录不会抛出错误- 移动目标调整:将文件直接移动到
2022子目录,而不是原主目录
如果你习惯用MD(mkdir的别名)简化写法,也可以改成:
Get-ChildItem *_*_JDO_*_*.* | Where BaseName -match '\d{6}_\d{6}_JDO_(\d{4})_\d{3}'| Group {$Matches[1]}| ForEach { $targetSubDir = Join-Path $_.Name "2022" MD $targetSubDir -Force $_.Group | Move -Dest $targetSubDir }
内容的提问来源于stack exchange,提问作者Rowan C
相关产品推荐
相关产品推荐

