私のファイルがテキストの下にある場合:
sampleA1xxx sampleA2yyyy sampleA3zzzzz ... sampleA4hhhhh
Windows バッチ スクリプトを使用して、sampleA4 を検索し、sampleA4hhhh を表示したいと考えています。
つまり、私の出力は次のようになります。sampleA4hhhhh
誰でも私を助けてください。
私のファイルがテキストの下にある場合:
sampleA1xxx sampleA2yyyy sampleA3zzzzz ... sampleA4hhhhh
Windows バッチ スクリプトを使用して、sampleA4 を検索し、sampleA4hhhh を表示したいと考えています。
つまり、私の出力は次のようになります。sampleA4hhhhh
誰でも私を助けてください。
@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 の制限を超えていないことを前提としています。
単純にキャレットをスペースに置き換え、ターゲット文字列が最初に出現するまで先頭の文字を削除し、そのターゲット文字列をリストとして処理します。最初の要素は必要な文字列になるため、利用可能になったら処理を停止します。
バッチを取るか、GNUWin sedを見てください:
>タイプファイル ^^sampleA1xxx ^^sampleA2yyyy ^^sampleA3zzzzz ^^sampleA4hhhhh >sed -r "s/.*(\b\w+4\w+)/\1/" ファイル sampleA4hhhhh
@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%!
)
)
)
OK、同様のケースでこれを自分で試してみましたが、うまくいきました:
for /f "tokens=4 delims=^^" %%a in (seperate.txt) do (echo %%a)
pause
注: これはバッチ ファイル用に設計されており、"tokens=" の後の 4 を停止したい区切りのテキストに置き換えます。
これが役に立ったことを願って、
モナ君。