を使用して各ファイルを反復処理している場合:
@echo off
FOR %%f IN (*\*.\**) DO (
echo %%f
)
各ファイルの拡張子を印刷するにはどうすればよいですか? %%f を一時変数に割り当ててから、コード :echo "%t:~-3%"
を使用して印刷しようとしましたが、成功しませんでした。
を使用して各ファイルを反復処理している場合:
@echo off
FOR %%f IN (*\*.\**) DO (
echo %%f
)
各ファイルの拡張子を印刷するにはどうすればよいですか? %%f を一時変数に割り当ててから、コード :echo "%t:~-3%"
を使用して印刷しようとしましたが、成功しませんでした。
FOR コマンドには、ファイル名を変更できる組み込みスイッチがいくつかあります。次のことを試してください。
@echo off
for %%i in (*.*) do echo "%%~xi"
詳細についてhelp for
は、修飾子の完全なリストを取得するために使用してください - かなりの数があります!
これは動作しますが、驚くほど高速ではありません。
@echo off
for %%f in (*.*) do call :procfile %%f
goto :eof
:procfile
set fname=%1
set ename=
:loop1
if "%fname%"=="" (
set ename=
goto :exit1
)
if not "%fname:~-1%"=="." (
set ename=%fname:~-1%%ename%
set fname=%fname:~0,-1%
goto :loop1
)
:exit1
echo.%ename%
goto :eof
サムの答えは間違いなくあなたが望むものにとって最も簡単です。しかし、私は追加したかった:
以前に発行したことがない限り、aのset
内に変数を入れないでください。すぐに使用することを期待してください。()
for
setlocal ENABLEDELAYEDEXPANSION
!
変数名をラップするために%の代わりに使用しています。例えば、
@echo off
setlocal ENABLEDELAYEDEXPANSION
FOR %%f IN (*.*) DO (
set t=%%f
echo !t:~-3!
)
チェックアウト
set /?
詳細については。
もう1つの方法は、 Paxが示すset
ように、サブルーチンを呼び出してを実行することです。