本帖最后由 aloha20200628 于 2024-2-26 14:13 编辑
延续前帖(http://www.bathome.net/thread-68463-1-1.html)的算法逻辑,先给一个处理单个源文件的纯P版(命令行参数指定单个源文件的路径文件名),供楼主随机测试那一堆不同源文件...
楼主的源文件是utf-8+编码,故本脚本运行结果是生成utf-8编码的*.new文件
- @echo off &setlocal enabledelayedexpansion
- if "%~1"=="" exit/b
- chcp 65001>nul
- set "tLine=id type name"
- (for /f tokens^=1-6^ delims^=^"^= %%1 in (' findstr "=" "%~1" ') do for /f "tokens=1-2 delims= < " %%a in ("%%~1") do (
- if /i "%%~b"=="id" (
- if defined vLine (echo,!vLine:~1!&set "vLine=")
- set "vLine=!vLine! %%2 %%4 %%6"
- ) else if /i "%%~b"=="name" (
- if not defined _%%2 (set "tLine=!tLine! %%2" &set "_%%2=1")
- set "vLine=!vLine! %%4"
- ) else if /i "%%~b"=="order" (
- if not defined _%%4 (set "tLine=!tLine! %%4" &set "_%%4=1")
- set "vLine=!vLine! %%6"
- ) else if /i "%%~b"=="val" (
- if not defined _%%6 (set "tLine=!tLine! %%6" &set "_%%6=1")
- set "vLine=!vLine! %%2"
- )
- ))>"%~1.v"
- if defined vLine (echo,!vLine:~1!)>>"%~1.v"
- echo,!tLine!>"%~1.new" & type "%~1.v">>"%~1.new" & del "%~1.v"
- endlocal&exit/b
复制代码
|