如何用PowerShell批量执行munge.exe并为.dat文件输出追加.out后缀?
解决PowerShell批量调用munge.exe处理带空格.dat文件的问题
你的命令失效主要有两个原因:
- 字符串拼接语法错误:
$_.name+".out"会被PowerShell拆成两个独立参数传递给-o,而非一个完整的文件名 - 带空格的文件名未被正确解析为单个参数
以下是两种可行的实现方式:
方式一:直接用双引号包裹拼接后的文件名
Get-ChildItem *.dat | ForEach-Object { munge $_.FullName -o "$($_.FullName).out" }
$_.FullName获取文件的完整路径,避免当前目录以外的文件路径问题"$($_.FullName).out"通过子表达式$()确保变量和后缀被拼接成一个完整字符串,PowerShell会自动处理带空格的文件名,将其作为单个参数传递给munge.exe
如果仅需处理当前目录文件,也可以用$_.Name替代$_.FullName:
Get-ChildItem *.dat | ForEach-Object { munge "$($_.Name)" -o "$($_.Name).out" }
方式二:用变量存储输出文件名(更易读)
Get-ChildItem *.dat | ForEach-Object { $inputFile = $_.FullName $outputFile = $inputFile + ".out" munge $inputFile -o $outputFile }
这种写法把输入输出路径单独存储,逻辑更清晰,适合新手调试和修改。
内容的提问来源于stack exchange,提问作者Garret Wilson
相关产品推荐
相关产品推荐

