PowerShell脚本修改求助:实现不同文件夹下对应文件名文件的合并输出
PowerShell脚本修改求助:实现不同文件夹下对应文件名文件的合并输出
嘿,我来帮你调整这个PowerShell脚本,完美匹配你的需求!你想要的是header文件夹里的对应txt文件和input文件夹里的dat文件一一合并,输出到指定文件夹对吧?
修改后的脚本及说明
先直接给你改好的脚本,每一步都加了注释方便理解:
# 定义各文件夹路径 $headerFolderLocation = "c:\temp\header\" $addonFolderLocation = "c:\temp\input\" $combinedFolderLocation = "c:\temp\output\" # 获取input文件夹下所有.dat格式的文件 $datFiles = Get-ChildItem $addonFolderLocation -Filter *.dat # 遍历每个.dat文件,找到对应header文件并合并 foreach ($datFile in $datFiles) { # 提取.dat文件的文件名(不带扩展名,比如01.dat -> 01) $fileNameWithoutExt = $datFile.BaseName # 拼接对应header文件的完整路径(比如header01.txt) $headerFilePath = Join-Path $headerFolderLocation "header$fileNameWithoutExt.txt" # 先检查header文件是否存在,避免找不到文件时出错 if (Test-Path $headerFilePath) { # 拼接输出文件的完整路径(保持原.dat文件名) $outputFilePath = Join-Path $combinedFolderLocation $datFile.Name # 使用copy /b命令二进制合并两个文件(确保文件内容不被破坏) cmd /c copy /b "$headerFilePath" + "$($datFile.FullName)" "$outputFilePath" Write-Host "✅ 合并完成:$headerFilePath + $($datFile.Name) -> $outputFilePath" } else { Write-Warning "⚠️ 未找到对应header文件:$headerFilePath,已跳过$($datFile.Name)" } }
关键修改点说明
- 新增header文件夹路径:单独定义了header文件所在的文件夹,让脚本结构更清晰
- 精准筛选文件:只处理input文件夹里的
.dat文件,避免误操作其他类型文件 - 对应文件名匹配:通过
BaseName提取.dat文件的核心名称,自动拼接出对应的headerXX.txt路径 - 容错检查:增加了
Test-Path判断header文件是否存在,防止脚本因找不到文件而中断,同时给出友好提示 - 规范路径拼接:用
Join-Path命令拼接路径,避免手动拼接时出现空格或路径格式错误
灵活调整提示
如果你的header文件命名规则不是headerXX.txt,而是直接和dat文件同名(比如01.txt对应01.dat),只需要修改构造header路径的那一行:
$headerFilePath = Join-Path $headerFolderLocation "$fileNameWithoutExt.txt"
这样就能完美适配你的命名规则啦!
备注:内容来源于stack exchange,提问作者Gavin
相关产品推荐
相关产品推荐

