0

簡単な作業だと思いますが、私はバッチ スクリプトの初心者です。

構造は次のようになります。

MAINDIR
    directory name
        nameof.file

ディレクトリ内のすべてのファイルの名前をディレクトリと同じ名前に一括変更しようとしています。

基本的には次のとおりです。

サブフォルダーをスキャンして、すべてを見つけます*.file

の名前*.fileを、既に存在するディレクトリの名前に変更します

最終結果nameof.filedirectory name.file

具体的には、名前を変更する必要があるファイルが 350 個あります。それらはすべて適切なディレクトリにあり、各フォルダー内の1つのファイルにフォルダーの名前をファイル名として付けたいです。

c:\folder 1\file1.ext
c:\folder 2\file2.ext
c:\folder 3\file3.ext

すべての.extファイルには、ファイル名としてフォルダー名が必要です。

c:\folder 1\folder 1.ext
c:\folder 2\folder 2.ext
c:\folder 3\folder 3.ext

それがより明確になることを願っています。スクリプトの準備ができたら、350 個のファイルすべてを 1 つずつスクリプトにドラッグ アンド ドロップすると、ファイルが取得されて名前が変更されます。

4

1 に答える 1

0

これにより、ドラッグされたファイルの名前がその親ディレクトリ名に変更されます。

setlocal enabledelayedexpansion
for %%a in (%1) do (
set p=%%~dpa
set p=!p:~0,-1!
for %%b in ("!p!") do ren %%a "%%~nb.*"
)

固定ルートディレクトリの下にあるすべてのサブフォルダ内のすべてのファイルでこれを再帰的に実行するには、これを使用できます

setlocal enabledelayedexpansion
for /r C:\folder %%a in (*) do (
set p=%%~dpa
set p=!p:~0,-1!
for %%b in ("!p!") do ren "%%a" "%%~nb.*"
)

これにより、すべてを個別にドラッグアンドドロップする必要がなくなります。一度に1つしか実行できない場合を除いて、最初の解決策で十分です。

于 2012-12-18T14:18:09.803 に答える