2

これまでの私のコード:

for /F "tokens=*" %%A in (#opm.txt) do set str=%%A
set str=%str:~0,3%
@echo.%str% > #tags.txt

基本的に、最初の 3 文字を取得しようとしているものの膨大なリストがありますが、現在、リストから取得できるのはそのうちの 1 つだけです。例えば:

「イーグル」という言葉がリストに載っています。最終結果は EAG である必要があります (できれば大文字で)。

任意のヒント?

4

1 に答える 1

1

for ループで複数のステートメントを実行する場合は、角かっこを使用する必要があります。

for /F "tokens=*" %%A in (#opm.txt) do ( 
    set str=%%A
    set str=%str:~0,3%
    @echo.%str% > #tags.txt
)

開き括弧は for ... do ... ステートメントと同じ行にあることに注意してください。この場合、遅延展開を使用してループ内の変数を操作する必要があります (これにより、感嘆符で囲まれた変数がその場で解決されます)。

@setlocal ENABLEDELAYEDEXPANSION

for /F "tokens=*" %%A in (#opm.txt) do ( 
    set str=%%A
    set str=!str:~0,3!
    @echo.!str! >> #tags.txt
)

@endlocal

>また、リダイレクト構文が からに変更されたことにも注意してください>>。一重括弧のリダイレクト#tags.txtは、ステートメントが実行されるたびに上書きされます。二重括弧のリダイレクトでは、ファイルの末尾に行が追加されます (ループの前にファイルが空であることを確認する必要がある場合があります)。

文字の大文字と小文字をバッチで置き換えることは、外部ツールがないとかなり複雑です。これは、テキスト処理に適したテクノロジではありません。代わりにPythonを検討しましたか?

于 2012-09-12T07:33:33.480 に答える