3

名前を変更する必要がある独自のサブディレクトリを含む何千ものサブディレクトリがあるディレクトリがあります。管理者権限を持たないWindows7マシンを使用しているため、これを行うための簡単なプログラムをダウンロードできません。

現在、バッチファイルを使用するように変更しようとしてC:\testいる名前のサブディレクトリを持ついくつかのサブディレクトリを持つテストディレクトリがあります。oldnew

明確にするために、私は次のものが欲しいです:

C:\ test \ 1 \ old
C:\ test \ 2 \ old
C:\ test \ 3 \ old

になる

C:\ test \ 1 \ new
C:\ test \ 2 \ new
C:\ test \ 3 \ new

あなたが提供できるどんな助けにも感謝します。

4

2 に答える 2

1

これが私がすぐに思いついたものです。私はローカルで簡単なテストを実行しました、そしてそれはあなたが求めていることをするようでした:

@echo off

FOR /D %%D IN ("C:\test\*") DO CALL :RENAME %%D

:RENAME
SET CRITERIA=\old
FOR /D %%R IN (%1%CRITERIA%) DO RENAME %%R "new"

それをバットファイルに保存して、試してみてください。うまくいけば、それがお役に立てば幸いです。

于 2012-12-27T16:07:33.480 に答える
1

Justinの回答は、私の同様の問題に非常に役立ちましたが、デフォルトでは、\ A \ B \ Cのより単純なパターンしか処理しませんでした。ここで、Aはベースディレクトリ、Bは未定のディレクトリ、Cは探しているディレクトリです。

私は彼のスクリプトを変更して、Cが見つかるまでベースディレクトリAを任意の数のレイヤーに再帰させました。

コマンドラインパラメータを期待するように記述されたスクリプトは次のとおりです。

@echo off

set BASEDIR=%1
SET CRITERIA=\%2
SET REPLACENAME=%3

call :FindDirs %BASEDIR%

GOTO END

:FindDirs
FOR /D %%F IN ("%1\*") DO CALL :RENAME %%F
GOTO:EOF

:RENAME
REM echo DIR=%1
FOR /D %%R IN ("%1%CRITERIA%") DO (
    if EXIST %%R RENAME %%R "%REPLACENAME%"
)
call :FindDirs %1
GOTO:EOF
于 2013-12-11T20:04:41.297 に答える