PowerShell按文件名特定片段分类移动文件并创建目录求助
问题解决与代码修正
错误原因
你的报错是因为Get-ChildItem的Filter参数要求传入字符串类型的通配符,而你传入了一个脚本块{$_.name -like "011529.tailnm.*"},导致参数类型不匹配。同时代码整体语法逻辑混乱,变量引用、管道衔接都存在问题。
修正后的代码
# 获取符合命名格式的所有txt文件 Get-ChildItem -Filter "*.tailnm.*.txt" | ForEach-Object { # 提取文件名中第二个"."后的前5个字符作为目标目录名 $targetDir = $_.Name.Split('.')[2].Substring(0, 5) # 检查目录是否存在,不存在则创建 if (-not (Test-Path -Path $targetDir)) { New-Item -ItemType Directory -Path $targetDir | Out-Null } # 移动文件到目标目录 Move-Item -Path $_.FullName -Destination $targetDir }
代码说明
Get-ChildItem -Filter "*.tailnm.*.txt":用字符串通配符直接筛选符合xxxx.tailnm.xxxx.txt格式的文件,避免参数类型错误。$_.Name.Split('.')[2].Substring(0, 5):拆分文件名后取第三个元素(索引从0开始),再截取前5个字符,得到年月分类标识(例如从22JUN21提取22JUN)。Test-Path与New-Item:检查目标目录是否存在,不存在则创建,Out-Null用于屏蔽目录创建的输出信息。Move-Item:将当前文件移动到目标目录。
内容的提问来源于stack exchange,提问作者Tjones
相关产品推荐
相关产品推荐

