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を検討しましたか?