2

を使用して、ファイルの長いリストで文字列を検索することに成功しましたfindstr。の出力を別のテキスト ファイルにリダイレクトfindstrしていますが、ソース ファイルの参照も含む出力行の開始部分を削除する必要があります。ベースは以下の例です

echo testtest > testing.txt
findstr 'test' *.txt > output.txt //output is 'testing.txt:testtest'

代わりにこのようなことをする必要があります

echo testtest > testing.txt
findstr 'test' *.txt | *something* > output.txt //output is 'testtest'

警告:
標準の CMD コマンドしか使用できません。ターゲット マシンに新しいソフトウェアをインストールできません。

4

4 に答える 4

4

Ansgar Wiechers がanswerで特定した CR/LF 問題を解決するソリューションを次に示します。

FOR ループを使用してすべてのファイルを反復し、個々のファイルごとに FINDSTR を実行します。各ファイルの間に空白行をエコーし​​ます。最後に、もう 1 つ FINDSTR を使用して、不要な空白行を削除します。

@echo off
>"output.txt" (
  for %%F in (*.txt) do (
    findstr "test" "%%F"
    (echo()
  )
)
findstr . "output.txt" >"output.txt.new"
move /y "output.txt.new" "output.txt" >nul
type output.txt
于 2013-01-23T21:45:57.737 に答える
4

このようなものが動作するはずです:

@echo off
for /f "delims=: tokens=1*" %%i in ('findstr "test" *.txt') do (
  echo %%j
) >> output.txt

すべての入力ファイルには末尾に改行が必要であることに注意してください。そうしないと、現在のファイルの最初の一致が、最後の行にある場合、前のファイルの最後の一致に追加される可能性があります。

testtestFOO.TXT:something test other
于 2013-01-23T20:07:22.383 に答える
0

powershell.exe必要なスクリプトを開発するには、PowerShell ( ) を使用する必要があります。コマンドラインで利用できるドキュメントは、本当に網羅的です:

PS > help about

さらに必要な場合: PowerShell の言語リファレンス マニュアルはありますか?

于 2013-01-23T12:07:51.850 に答える
-1

awkLinux システムでは、次のコマンドに like を使用できます。

cat output.txt | awk 'match($0,":"){print substr($0,RSTART+1)}'
于 2013-01-23T13:11:56.237 に答える