-2

私はバッチスクリプトを初めて使用します。テキストファイル(a.txt)に1、2、3などの番号(行番号ではない)を一致させる方法を知りたいです。

他の番号が一致する場合は警告が表示され、探している番号と一致する場合は成功が表示されます。

アドバイスや助けはありますか?私はfindstrとif条件を試しましたが、私が初心者だと言ったようにうまくいきませんでしたので、助けてください

ありがとうハリ

4

1 に答える 1

0

ここで何を言おうとしているのかよくわかりませんが、著者が見つけようとしているのは次のことだと思います。

  • a.txt という名前の txt ファイルに 1,2,3 (または「,」で区切られたその他の数値系列) が含まれているかどうかを確認できますか?ファイルに他の数値がない場合は、ファイルではなくユーザーに警告しEchoます名前 ?

解決:

setlocal enabledelayedexpansion
setlocal enableextensions
set file=Ok
set target=a.txt

for /f "delims=, tokens=1-3" %%a in (%target%) do (
    call :Check %%a %%b %%c
)
:Check
if exist %1 (
if %1 neq 1 if %1 neq 2 if %1 neq 3 (set file=Alert
) else (shift /1)
goto :Check
) else (goto :report)
goto :eof

:report
if %file% equ Alert echo %target% does not match
if %file% equ Ok (
echo %target% is fine
Rem ! ! ! Add what you want to do to file here
)

OK、これはファイルに 1 行しかない場合にのみ機能します。それが機能するかどうかわからないため、微調整が必​​要になる場合があります(機能しない場合は教えてください)。ほとんど、それが言うところではtokens=1-3、それはシリーズの長さです. call :Check %%a %%b %%cそれぞれを実装することなので、シリーズに4つある場合、これらは になりtokens=1-4ますcall :Check %%a %%b %%c %%d

:check手順の最後にif %1 neq 1 if %1 neq 2 if %1 neq 3、シリーズを構成する番号が含まれています(順序はチェックされないことに注意してください)。したがって、ed に 4 を含めたい場合は、 になりますif %1 neq 1 if %1 neq 2 if %1 neq 3 if %1 neq 4

繰り返しますが、私はそれをテストしていないので、これがうまくいくかどうかはわかりません. その概念が間違っている場合 (そうではないと確信しています)、教えてください。この回答を削除します。

于 2013-07-17T04:27:05.753 に答える