将多个.text转换为单个文件?

时间:2013-07-13 21:43:32

标签: powershell batch-file vbscript converter

我有很多文件夹。

在每个文件夹中,大约介于1到20个.txt文件

之间

每个.txt文件(唯一名称)包含一个标题(line1),后跟一个HTML格式的文本(第2行)

示例(1)关于.txt如何查看内部:

Frankfurter tail turkey doner
<p>Bacon ipsum dolor sit amet turkey sausage brisket pork.</p><p>Tongue swine turducken capicola shoulder hamburger pig.<p/><p>Ball tip jerky ham, doner <a href=""https://en.wikipedia.org/wiki/Meat"">filet mignon ham</a> hock bresaola jowl andouille pig cow</p>

示例(2)关于.txt如何查看内部:

Batman
<p>You either die a hero or you live long enough to see yourself become the villain.</p>

简单地说,我想将.txt文件的内容合并到一个文件中,每个文件包含一个文件内容。

每条线也应用引号括起来,用逗号分隔它们。

从上面的示例中,输出文件应如下所示:

"Frankfurter tail turkey doner","<p>Bacon ipsum dolor sit amet turkey sausage brisket pork.</p><p>Tongue swine turducken capicola shoulder hamburger pig.<p/><p>Ball tip jerky ham, doner <a href=""https://en.wikipedia.org/wiki/Meat"">filet mignon ham</a> hock bresaola jowl andouille pig cow</p>"
"Batman","<p>You either die a hero or you live long enough to see yourself become the villain.</p>"

所以,我的问题是如何以最简单,最快捷的方式完成这项工作。

我现在用手做这个很慢,在这个卷上进行复制让我的大脑膨胀。

编辑1:正在进行一些精简研究;

  • Powershell,VBA和.BAT文件似乎有些东西,但仍未发现任何有用的东西。
  • 我不想拥有代码中指定的输入或输出文件的位置,解决方案的启动文件将被放置在任何文件夹中,并且此处也应生成输出文件。

尝试1#: 创建了包含以下内容的Windows批处理文件(.bat):

for %f in (*.txt) do type "%f" >> combined.txt

放置在包含十几个.txt文件的文件夹中,但控制台只是打开和关闭。没有创建文件!

Edit2:现在我们正在做饭!

此:

for %%f in (*.txt) do type "%%f" >> combined.txt

提供输出:

Batman
<p>You either die a hero or you live long enough to see yourself become the villain.</p>
Frankfurter tail turkey doner
<p>Bacon ipsum dolor sit amet turkey sausage brisket pork.</p><p>Tongue swine turducken capicola shoulder hamburger pig.<p/><p>Ball tip jerky ham, doner <a href=""https://en.wikipedia.org/wiki/Meat"">filet mignon ham</a> hock bresaola jowl andouille pig cow</p>

这与我想要的非常接近!

  • 现在添加引号并用逗号替换linebrek 没有解决。

致以最诚挚的问候,

吕康康

1 个答案:

答案 0 :(得分:1)

获得外部帮助,这非常有效。

    @echo off
cls
setlocal
set "combined=combined.txt"
(
  for %%a in (*.txt) do (
    if not "%%a" == "%combined%" (
      echo %%a 1>&2
      set "firstLine=true"
      for /f "tokens=1,* delims=:   " %%b in ('findstr /n "^" %%a') do (
        if defined firstLine (
          set /p =""%%c",""
          set "firstLine="
        ) else if not "%%c" == "" (
          set /p =%%c
        )
      )
      echo "
    )
  )
) > %combined% <nul
endlocal
goto:eof