标题: [文件操作] 批处理怎样递归目录,输出对应的xml文件? [打印本页]
作者: ywh0512 时间: 2022-12-14 19:30 标题: 批处理怎样递归目录,输出对应的xml文件?
用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>
作者: went 时间: 2022-12-14 20:25
本帖最后由 went 于 2022-12-14 20:27 编辑
- @echo off & cd /d "%~dp0"
- set "TAB= "
- (
- echo.^<?xml version="1.0" encoding="utf-8" ?^>
- echo. ^<Document^>
- for /d %%i in (*) do call :build_dir "%cd%\%%~i" "%TAB%"
- echo. ^</Document^>
- ) > "%~n0.xml"
- type "%~n0.xml"
- pause&exit
-
- :build_dir
- echo.%~2^<Button name="%~n1" path="%~1\%~n1.txt"^>
- for %%i in ("%~1\*.txt") do if not "%%~ni"=="%~n1" echo.%~2%TAB%^<Button name="%%~ni" path="%%~i"/^>
- for /d %%i in (%~1\*) do call :build_dir "%%~i" "%~2%TAB%"
- echo.%~2^</Button^>
复制代码
作者: ywh0512 时间: 2022-12-14 20:50
回复 2# went
牛啊,没毛病
作者: czjt1234 时间: 2022-12-14 21:00
回复 2# went
厉害,巧妙地递归了文件和文件
作者: czjt1234 时间: 2022-12-15 07:38
本帖最后由 czjt1234 于 2022-12-15 07:52 编辑
- Dim oStream, file1, file2, s
-
- file1 = "1.txt" '源文件
- file2 = "2.txt" '目标文件
-
- Set oStream = CreateObject("ADODB.Stream")
- oStream.Type = 2 'adTypeText
- oStream.Mode = 3 'adModeReadWrite
- oStream.Charset = "gb2312" '原编码
- oStream.Open()
- oStream.LoadFromFile file1
- s = oStream.ReadText()
- oStream.Close()
- oStream.Charset = "utf-8" '目标编码
- oStream.Open()
- oStream.WriteText s
- oStream.SaveToFile file2, 2 'adSaveCreateOverWrite
- oStream.Close()
-
- MsgBox "ok"
复制代码
可能你还需要一个转换编码的vbs
作者: terse 时间: 2022-12-16 00:10
二楼代码15行for里路径是不是加上引号呢 以免空格情况
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |