2015-10-13 186 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