2016-11-15 6 views
0

私はこのファイルを持っていて、それから1番目と2番目の列を 'Titan'パターンまたは第1列と第2列(パターンは最初の2列を除く他の列に表示されます)。cmd/batchでパターンごとのファイルから1番目と2番目の列を除外します。

は、ここでの例ファイルです:-(私はダメ

は、Windowsのバッチでそれを行う:

d:\sections.txt: 

# section1 
127.0.0.1 80 Titan 
ip1 443 Titan 

# software servers 2 
ip2 80 software 
servername 443 Composer software 

C:\Users\user>findstr Titan d:\sections.txt 
127.0.0.1 80 Titan 
ip1 80 Titan 

は私が

for /F "tokens=1 delims= " %%i in $(findstr Titan d:\sections.txt) do @echo %i 

の線に沿って何かについて考えたが、それはしていませんMicrosoft Windowsをお待ちしております。 私は試しました:

findstr Titan d:\sections.txt | for /F "tokens=1 delims= " %%i in (d:/sections.txt) do @echo %%i 

でも、ファイルなしでForループを実行する方法とfindstrの出力を知ることはできません。

このコマンドは、すべてのヘルプは他に、高く評価されるだろう

など、私は愚かな小さなことのために長いスクリプトを書いて、一時ファイルにoutputingから維持しようとしているので、より大きなスクリプトの一部、であるべきですツールは必要に応じて。私はbashを逃す。

+1

あなたの質問にあなたが提供したことに基づいて、過度に失礼ではないけれども、バッチスクリプトコマンドの構造の一般的な把握はあまり良くありません。そのため、バッチスクリプト全体を見ることができれば自信があります。また、出力をどのようにするかの例もわかります。 – Compo

答えて

2

あなたの行に3つの小さな誤りがある。
a)コマンドの出力を処理するには、コマンドを一重引用符で囲みます。
b)バッチファイルまたはで使用する場合は、%%iを使用して、コマンドラインでの使用には%iを使用してください。両方の構文を混用しないでください。
c)「最初のと2番目の列をフィルタリングする」と言っていますが、最初のトークンのみを使用しています。

for /F "tokens=1,2 delims= " %%i in ('findstr Titan d:\sections.txt') do @echo %%i %%j 

は、あなたが望むものにもっと近くなるはずです。

+0

乾杯!私はCMDでテストしていましたので、%iを使用しましたが、コマンドはJenkinsのパイプラインバットで、一重引用符でうまく動作します。数え切れないほどのものです... –

関連する問題