バッチForループでは、echo %%i:~0,5%は機能しません

バッチForループでは、echo %%i:~0,5%は機能しません

このコマンドが機能しないのはなぜですか? どうすれば修正できますか?

for /F %%i in ('dir c:\logs /A:-D/B') do @echo %%i:~0,5%

答え1

このコマンドが機能しないのはなぜですか?

/F %%i を ('dir c:\logs /A:-D/B') で実行し、@echo %%i:~0,5% を実行します。

ループ変数からテキストを抽出できないため、一時変数を使用する必要があります。

使用する必要がある遅延した拡大

次の cmd ファイルを試してください:

@echo off
setlocal enabledelayedexpansion
for /F %%i in ('dir c:\logs /A:-D/B') do (
   set _temp=%%i
   set _result=!_temp:~0,5!
   echo !_result!
   )
endlocal

参考文献

関連情報