找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21108|回复: 5

[文件操作] 批处理怎样递归目录,输出对应的xml文件?

[复制链接]
发表于 2022-12-14 19:30:10 | 显示全部楼层 |阅读模式
用bat实现,递归目录,输出对应的xml文件

1、下面是用tree /f 打印出来的目录结构
D:.
│  
├─天国地狱
│      Test.txt
│      天国地狱.txt
│      
├─战场
│      怪物能力.txt
│      战场.txt
│      
└─神殿攻防战
    │  神殿NPC.txt
    │  神殿攻防战.txt
    │  
    └─AA
        │  AA.txt
        │  神殿NPC.txt
        │  
        └─BB
                BB.txt
                神殿攻防战.txt

2、下面是根据1来输出的xml文档内容(注意:XXXX代表文件夹或文件前面的绝对路径)
<?xml version="1.0" encoding="utf-8" ?>

<Document>
        <Button name="天国地狱" path="XXXX\天国地狱\天国地狱.txt">
                <Button name="Test" path="XXXX\天国地狱\Test.txt"/>
        </Button>
        <Button name="战场" path="XXXX\战场\战场.txt">
                <Button name="怪物能力" path="XXXX\战场\怪物能力.txt"/>
        </Button>
        <Button name="神殿攻防战" path="XXXX\神殿攻防战\神殿攻防战.txt">
                <Button name="神殿NPC" path="XXXX\神殿攻防战\神殿NPC.txt"/>
                <Button name="AA" path="XXXX\神殿攻防战\AA\AA.txt">
                        <Button name="神殿NPC" path="XXXX\神殿攻防战\AA\神殿NPC.txt"/>
                        <Button name="BB" path="XXXX\神殿攻防战\AA\BB\BB.txt">
                                <Button name="神殿攻防战" path="XXXX\神殿攻防战\AA\BB\神殿攻防战.txt"/>
                        </Button>
                </Button>
        </Button>
</Document>
发表于 2022-12-14 20:25:58 | 显示全部楼层
本帖最后由 went 于 2022-12-14 20:27 编辑
  1. @echo off & cd /d "%~dp0"
  2. set "TAB=    "
  3. (
  4.         echo.^<?xml version="1.0" encoding="utf-8" ?^>
  5.         echo. ^<Document^>
  6.         for /d %%i in (*) do call :build_dir "%cd%\%%~i" "%TAB%"
  7.         echo. ^</Document^>
  8. ) > "%~n0.xml"
  9. type "%~n0.xml"
  10. pause&exit

  11. :build_dir
  12. echo.%~2^<Button name="%~n1" path="%~1\%~n1.txt"^>
  13. for %%i in ("%~1\*.txt") do if not "%%~ni"=="%~n1" echo.%~2%TAB%^<Button name="%%~ni" path="%%~i"/^>
  14. for /d %%i in (%~1\*) do call :build_dir "%%~i" "%~2%TAB%"
  15. echo.%~2^</Button^>
复制代码

评分

参与人数 1技术 +1 收起 理由
czjt1234 + 1 厉害

查看全部评分

 楼主| 发表于 2022-12-14 20:50:26 | 显示全部楼层
回复 2# went


    牛啊,没毛病
发表于 2022-12-14 21:00:49 | 显示全部楼层
回复 2# went


    厉害,巧妙地递归了文件和文件
发表于 2022-12-15 07:38:08 | 显示全部楼层
本帖最后由 czjt1234 于 2022-12-15 07:52 编辑
  1. Dim oStream, file1, file2, s

  2. file1 = "1.txt"    '源文件
  3. file2 = "2.txt"    '目标文件

  4. Set oStream = CreateObject("ADODB.Stream")
  5. oStream.Type = 2    'adTypeText
  6. oStream.Mode = 3    'adModeReadWrite
  7. oStream.Charset = "gb2312"    '原编码
  8. oStream.Open()
  9. oStream.LoadFromFile file1
  10. s = oStream.ReadText()
  11. oStream.Close()
  12. oStream.Charset = "utf-8"     '目标编码
  13. oStream.Open()
  14. oStream.WriteText s
  15. oStream.SaveToFile file2, 2    'adSaveCreateOverWrite
  16. oStream.Close()

  17. MsgBox "ok"
复制代码


可能你还需要一个转换编码的vbs
发表于 2022-12-16 00:10:45 | 显示全部楼层
二楼代码15行for里路径是不是加上引号呢 以免空格情况
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 07:56 , Processed in 0.011538 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表