2016-04-13 10 views
1

内のテキストの最初の行をコピーします。 CSS /メタデータテキストの代わりに.htmの細かいテキストを出力する方法がありますか?ありがとう。バッチは、私は現在、これは持っている複数の.htmファイル

+0

追加するには、利用できる最初のテキストは、spanタグです。 – FunkyJ

+1

これには完全なHTMLパーサーが必要です。貧しい人の解決策:あなたのシステムにgrepのようなユーティリティがありますか? – usr2564301

答えて

0

COMオブジェクトのhtmlfileを構築し、標準のJavaScript DOMメソッドを使用するには、バッチ+ JScriptハイブリッドスクリプトを使用できます。次に、各ノードのノードタイプがテキストノードであるかどうかを再帰的にチェックしながら、document.bodyで始まるDOMを処理する例を示します。最初に英数字を含むものが見つかると、トリムされたテキストデータをエコーし​​て終了します。バッチランタイムは、その出力をテキストファイルにリダイレクトします。これを.bat拡張子で保存し、探しているものにかなり近いかどうか確認してください。

@if (@CodeSection == @Batch) @then 
@echo off & setlocal 

> output.txt (
    for %%I in (*.htm) do cscript /nologo /e:JScript "%~f0" <"%%~fI" 
) 
goto :EOF 

@end // end Batch/begin JScript hybrid code 

var htmlfile = WSH.CreateObject('htmlfile'); 

htmlfile.write('<meta http-equiv="x-ua-compatible" content="IE=9" />'); 
htmlfile.write(WSH.StdIn.ReadAll()); 
htmlfile.documentElement.normalize(); 
String.prototype.trim = htmlfile.parentWindow.String.prototype.trim; 

function walk(node) { 
    do { 
     if (node.nodeType === 3 && /\w/.test(node.data)) { 
      WSH.Echo(node.data.trim()); 
      htmlfile.close(); 
      WSH.Quit(0); 
     } 
     if (node.hasChildNodes()) walk(node.firstChild); 
    } while (node = node.nextSibling); 
} 

walk(htmlfile.documentElement.getElementsByTagName('body')[0]); 
+0

@FunkyJ実際に最初の ''タグであれば、最後の行で" body "を" span "に置き換えることができます。または、IDを持つ祖先要素がある場合は、 'getElementById'を使ってみてください。塩を味わう。 – rojo

+0

例外なく動作します。私はちょうどそれらがすべて同様の構造に従っているわけではないので、これらのファイルで見つけることができるものにあまりにも多くのバリエーションがあると思います。どうもありがとう。 – FunkyJ

関連する問題