读取文件名并循环以获取每个文件的顶行以创建XML

时间:2014-09-04 03:57:49

标签: xml batch-file

我有一个文件夹,例如

  1. 的test.txt
  2. test_1.txt
  3. 每个人都有一个像这样的网址 https://ia600407.us.archive.org/34/items/zfl6_512kb.mp4

    我想获取.txt文件的所有文件名,然后从每个文本文件中获取URL,给它一个ID和质量,以便最终看起来像这样

    <channel ID='1' name='test' url='https://ia600407.us.archive.org/34/items/zfl6_512kb.mp4' quality='best' />
    <channel ID='2' name='test 1' url='https://ia600407.us.archive.org/34/items/zfwrr_512kb.mp4' quality='best' />
    

    注意第二个没有名称的下划线,我需要添加所以它取出下划线并在for循环中添加一个空格

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL enabledelayedexpansion
SET "sourcedir=U:\sourcedir\t w o"
PUSHD "%sourcedir%"
FOR /f "tokens=1*delims=[]" %%a IN ('dir /b /a-d "*.txt"^|find /n /v "" ') DO (
 SET "name=%%b"
 SET "name=!name:_= !"
 FOR /f "delims=" %%u IN ("%%b") DO (
  ECHO(^<channel ID='%%a' name='!name!' url='%%u' quality='best' /^>
 )
)

GOTO :EOF

您需要更改sourcedir的设置以适合您的具体情况。


@ECHO OFF
SETLOCAL enabledelayedexpansion
SET "sourcedir=U:\sourcedir\t w o"
PUSHD "%sourcedir%"
FOR /f "tokens=1*delims=[]" %%a IN ('dir /b /a-d "*.txt"^|find /n /v "" ') DO (
 SET "name=%%b"
 SET "name=!name:_= !"
 FOR /f "delims=" %%u IN ('type "%%b"') DO (
  >>newfile.xyz ECHO(^<channel ID='%%a' name='!name!' url='%%u' quality='best' /^>
 )
)

TYPE newfile.xyz

POPD

GOTO :EOF

修改 - 请注意newfile.xyz中已创建sourcedir。如果在重定向器字符串中使用显式驱动器/路径,则显式驱动器/路径将覆盖默认值。

为完整性添加了popd

请注意,for %%u现在适用于type %%b;以前处理的是fileNAME,而不是内容。