質問
を使用して各ファイルを反復処理する場合:
@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
サムの答えは、間違いなくあなたが望むものにとって最も簡単です。しかし、私は追加したかった:
for
の()
内の変数を set
しないでください。以前に発行された
setlocal ENABLEDELAYEDEXPANSION
そして、%の代わりに!
を使用して変数名をラップしています。たとえば、
@echo off
setlocal ENABLEDELAYEDEXPANSION
FOR %%f IN (*.*) DO (
set t=%%f
echo !t:~-3!
)
チェックアウト
set /?
詳細情報。
他の代替方法は、 Pax が示すように、 set
を実行するサブルーチンを呼び出すことです。 。
所属していません StackOverflow