2

私のファイルがテキストの下にある場合:

sampleA1xxx sampleA2yyyy sampleA3zzzzz ... sampleA4hhhhh

Windows バッチ スクリプトを使用して、sampleA4 を検索し、sampleA4hhhh を表示したいと考えています。

つまり、私の出力は次のようになります。sampleA4hhhhh

誰でも私を助けてください。

4

4 に答える 4

2
@ECHO OFF
SETLOCAL
FOR /f "delims=" %%i IN (q17316008.txt) DO SET line=%%i
SET line=%line:^= %
SET line=%line:*sampleA4=sampleA4%
FOR %%i IN (%line:^^= %) DO SET line=%%i&GOTO :done
:done
ECHO %line%

GOTO :EOF

これは、私が収集したタスクを実行する必要があります。"samplea4"文字列がファイルの 1 行に存在し、大文字と小文字が区別されず、行の長さが最大 ​​8K の制限を超えていないことを前提としています。

単純にキャレットをスペースに置き換え、ターゲット文字列が最初に出現するまで先頭の文字を削除し、そのターゲット文字列をリストとして処理します。最初の要素は必要な文字列になるため、利用可能になったら処理を停止します。

于 2013-06-26T16:55:44.097 に答える
2

バッチを取るか、GNUWin sedを見てください:

>タイプファイル
^^sampleA1xxx ^^sampleA2yyyy ^^sampleA3zzzzz ^^sampleA4hhhhh

>sed -r "s/.*(\b\w+4\w+)/\1/" ファイル
sampleA4hhhhh

于 2013-06-26T10:38:09.583 に答える
2
@echo off
setlocal EnableDelayedExpansion
set target=sampleA4
set len=8
for /F "delims=" %%a in ('findstr "%target%" theFile.txt') do (
   for %%b in (%%a) do (
      set word=%%b
      if "!word:~0,%len%!" equ "%target%" (
         echo !word:~%len%!
      )
   )
)
于 2013-06-26T11:00:42.127 に答える
0

OK、同様のケースでこれを自分で試してみましたが、うまくいきました:

for /f "tokens=4 delims=^^" %%a in (seperate.txt) do (echo %%a)
pause

注: これはバッチ ファイル用に設計されており、"tokens=" の後の 4 を停止したい区切りのテキストに置き換えます。

これが役に立ったことを願って、

モナ君。

于 2013-06-26T09:42:22.610 に答える