2015-10-13 88 views
0

我已经到达下面的代码来读取指定文件夹内的* .txt文件的文件名和内容。我目前的问题是,它似乎将读取内容中的空格解释为空格,而不是插入返回。我还希望能够解析和替换txt文件中的选项卡,并使用一些空格来模拟“选项卡”。我怎样才能做到这一点?解析空格并返回

<Html> 
<Head> 

    <Title>Installer</Title> 

<Script Language="VBScript" Type="Text/VBScript"> 

'-- Resize & move app to center 

     Sub SetWindow(WidthX,HeightY) 
      Self.ResizeTo WidthX, HeightY 
      Self.MoveTo (screen.Width - WidthX)/2, (screen.Height - HeightY)/2 
     End Sub 

'-- Call Window resize Sub 
     SetWindow 800, 600 

</Script> 

<Hta:Application Id="Installer" ApplicationName="Installer"  Version="0.1" 

    SingleInstance="Yes" 
      Icon="image/appIcon.ico" 
      Caption="No" 
      Border="None" 
      InnerBorder="No" 
      ContextMenu="No" 
      SysMenu="Yes" 
      Scroll="No" 
      Selection="No" 

/> 
</Head> 
<Body> 

<Script Language="VBScript" Type="Text/VBScript"> 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
objStartFolder = "Notes\" 

Set objFolder = objFSO.GetFolder(objStartFolder) 

Set colFiles = objFolder.Files 
    For Each objFile in colFiles 
    If UCase(objFSO.GetExtensionName(objFile.name)) = "TXT" Then 

Files = objStartFolder & objFile.name 
Set objReadFile = objFSO.OpenTextFile(Files, 1) 

    document.write Left(objFile.name, Len(objFile.name)-4) & "<br>" 

    document.write objReadFile.ReadAll & "<br><br>" 
objReadFile.Close 

else 
    document.write ="File was empty" 

End If 
Next 

</Script> 

</Body> 
</Html> 

回答

2

HTML不会按照您期望的方式处理行尾的CRLF。

您可以取代所有符合<br>标签

document.write Replace(objReadFile.ReadAll, vbCRLF, "<br>") & "<br><br>" 

或者你可以把文件里面的内容<pre>标签

document.write "<pre>" & objReadFile.ReadAll & "</pre><br><br>" 

也许第二个选项,将更好地满足您的问题,因为你也想结束以空格替换标签页

document.write "<pre>" & replace(objReadFile.ReadAll, vbTab, " ") & "</pre><br><br>" 
+0

我不记得,因为它已经是长久以来我已经与形式的工作,但会文字区尊重这一点?正如在文件的正确格式?如果我选择将结果字符串输出到它那里?我也假设这个代码将工作:'document.write替换(objReadFile.ReadAll,vbCRLF,“
”,vbTab,“”)' – Ctrlaltdenied

+0

类型的实现它:'repReturn = Replace(objReadFile.ReadAll,vbCRLF “
”) repTab =替换(repReturn,vbTab,“         ”) 文件撰写repTab&“

”'但我相信它可以被冷凝。只是用我所知道的来实现它。不幸的是,HTA不尊重多个非中断空间......所以我不确定如何实现标签“效果” – Ctrlaltdenied

+0

经过进一步的考虑,我决定从代码中删除标签替换,因为它没有“因为这将成为一个模板引擎,所以看起来真的很有好处。或多或少地设计为允许用户创建一个txt文件模板,并在其中包含可替换的标签,如[name],[address]等。 – Ctrlaltdenied

1

下面是修改代码来获得想要的结果,我想,对于那些谁想要它明码格式:

Set objFSO = CreateObject("Scripting.FileSystemObject") 
objStartFolder = "Notes\" 

Set objFolder = objFSO.GetFolder(objStartFolder) 

Set colFiles = objFolder.Files 
    For Each objFile in colFiles 
    If UCase(objFSO.GetExtensionName(objFile.name)) = "TXT" Then 

     Files = objStartFolder & objFile.name 
     Set objReadFile = objFSO.OpenTextFile(Files, 1) 

     strExt = Left(objFile.name, Len(objFile.name)-4) 
     strNote = Replace(objReadFile.ReadAll, vbCRLF, "<br>") 

    objReadFile.Close 

     document.write strExt & "<br><br>" 
     document.write strNote & "<br><br>" 

    else 
    document.write ="File was empty" 

    End If 
Next 
+0

如果需要,我会将其作为一个单独的问题发布,但它有点与这个。我想在这里获取文件名(strExt)的循环,并获取文件内容(strNote),并将它们构建到单独的动态数组中,以便稍后在文件中输出。任何人都可以通过我上面的代码提供额外的答案来解决这个问题吗? – Ctrlaltdenied