如何批量为C:\myfolder下所有*.uci文件添加指定配置行?
批量修改Chessbase UCI引擎配置文件的线程数
我在
C:\myfolder目录下有超过100个*.uci文件,这类文件是遵循UCI协议的象棋引擎配置文件,Chessbase软件中每个象棋引擎都会生成对应enginename.uci文件。我希望将引擎使用的CPU核心数从1改为16,需在文件中第8、9行添加如下配置行:[OPTIONS] Threads=16目前我使用的脚本仅能修改单个文件(如下所示),请问如何修改脚本以批量处理该目录下所有
*.uci文件?
原脚本:@echo off powershell "$f=(Get-Content somename.txt);$f[8]='heretext1';$f | set-content somename.txt" powershell "$f=(Get-Content somename.txt);$f[9]='heretext2';$f | set-content somename.txt"
解决方案
你可以使用以下批量处理脚本,它会遍历目标目录下所有.uci文件,完成指定行的修改:
@echo off set "targetDir=C:\myfolder" set "line8=[OPTIONS]" set "line9=Threads=16" powershell -Command "Get-ChildItem -Path '%targetDir%' -Filter '*.uci' | ForEach-Object { $content = Get-Content $_.FullName; if ($content.Count -ge 9) { $content[7] = '%line8%'; $content[8] = '%line9%' } else { $content += '%line8%'; $content += '%line9%' }; $content | Set-Content $_.FullName -Encoding UTF8 }" echo 批量修改完成! pause
关键说明
set "targetDir=C:\myfolder":指定待处理文件所在目录,可根据实际路径调整- PowerShell数组索引从0开始,因此原需求的第8行对应
$content[7],第9行对应$content[8] - 脚本会自动判断文件行数:
- 若文件行数≥9,直接替换对应行内容
- 若文件行数不足9,将配置行追加到文件末尾,避免索引越界错误
-Encoding UTF8:保证文件编码兼容Chessbase读取,防止乱码
内容的提问来源于stack exchange,提问作者Antivoyager
相关产品推荐
相关产品推荐

