[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 aloha20200628 于 2024-2-26 14:13 编辑


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

TOP

回复 1# zhengwei007

如12楼脚本代码(假设存为 test.bat)用随机性测试均予通过,可用以下一行代码(直接复制到命令行运行即可)完成指定目录中的所有*.xml源文件处理...
  1. for %a in (*.xml) do @test.bat "%~a"
复制代码

TOP

返回列表