0

バッチ ファイル (folder.bat という名前) を使用して、"my folder" の下の各 foler 名に文字列 "_v0_1" を追加しています ("my folder" の下に約 100 個のフォルダーがあります)。

この行を含むonotherバッチファイルからバッチ(folder.bat)を呼び出しています(たとえば):

呼び出しフォルダー arbiter_logic

呼び出しフォルダー arbiter_logic_old

問題は、フォルダー名が変数名 (%1) よりも長く、それを避けたい場合にも、フォルダーの名前をバッチで変更することです。

変数 %1 とフォルダー名が完全に一致する場合にのみ名前変更アクションが実行されるようにします。これが私のコードです:

setlocal enabledelayedexpansion
pushd G:\my folder
for /f "tokens=* delims= " %%a in ('dir /b/ad') do (
set x=%%a
set y=!x:%1=%1_v0_1!
ren !x! !y!
)
::==
cd..

現在、望ましくない結果は次のとおりです。

arbiter_logic_v0_1

arbiter_logic_v0_1_old_v0_1

望ましい結果は、以下に示すように、バッチがフォルダー名を変更することです。

arbiter_logic_v0_1

arbiter_logic_old_v0_1

フォルダー名に検索と置換の方法を適用する必要があると想定していますが、その方法がわかりません。

バッチファイルがうまくいかない場合は、vbスクリプトも適切なソリューションになります。

前もって感謝します。シェイ。

4

1 に答える 1

0

「folder.bat」は必要ありません。メインスクリプト内のディレクトリの名前を変更するだけです。

ren "g:\my folder\arbiter_logic" "arbiter_logic_v0_1"
ren "g:\my folder\arbiter_logic_old" "arbiter_logic_old_v0_1"

特に名前の変更が多い場合は、FORループを使用して入力を節約できます。

for %%F in (
  "arbiter_logic"
  "arbiter_logic_old"
) do ren "g:\my folder\%%~F" "%%~F_v0_1"

メインスクリプト内でfolder.batを本当に呼び出したい場合は、「folder.bat」を同じように単純にすることができます。

@ren "g:\my folder\%~1" "%~1_v0_1"
于 2012-12-04T15:22:22.217 に答える