1. ホーム
  2. file

[解決済み] バッチリです。拡張子削除

2022-04-22 18:15:37

質問

Wikipediaに掲載されている以下のバッチスクリプトがあります。

@echo off
    for /R "C:\Users\Admin\Ordner" %%f in (*.flv) do (
    echo %%f
)
pause

for-loopでは、拡張子がflvのファイルはすべてechoされます。 しかし、私はそのファイルに対して何らかのアクションを行いたいのです。 ここで、拡張子なしのファイルと拡張子ありのファイルが一回ずつ必要です。 どうしたらこの2つを手に入れることができるでしょうか?

解決策を探したのですが、見つかりませんでした。 バッチは本当に初心者なんです・・・。

解決方法は?

を使用することができます。 %%~nf のリファレンスで説明されているように、ファイル名のみを取得することができます。 for :

@echo off
    for /R "C:\Users\Admin\Ordner" %%f in (*.flv) do (
    echo %%~nf
)
pause

以下のオプションが利用できます。

モディファイアを持つ変数 説明

I を展開し、その周囲にあるものをすべて削除します。
                        引用符("")で囲みます。
fI %I を完全修飾パス名に展開します。
I をドライブレターのみに展開します。
pI %I をパスのみに展開します。
%~nI %I をファイル名のみに展開します。
xI ファイル拡張子のみに %I を展開します。
sI 短い名前だけを含むようにパスを拡張します。
%~aI %I をファイルの属性に展開します。
%~tI %I をファイルの日付と時刻に展開します。
zI ファイルのサイズに %I を展開します。
PATH:I環境変数PATHにリストされているディレクトリを検索します。
                        の完全修飾名に展開されます。
                        最初に見つかったもの。環境変数名が 
                        が定義されていない、または検索してもファイルが見つからない場合。
                        この修飾子は、空の文字列に展開されます。