0

特にトリッキーなバッチ スクリプト リクエストがあります。このようなファイル/フォルダー構造があります

/mapcfgs/
  /folder 1/
     somefile.new
     somefile.old
  /folder 2/
     someotherfile.new
     someotherfile.old
  /folder 3/
     someotherotherfile.new
     someotherotherfile.old
/maps/
  /folder 1/
     somefile.inf
  /folder 2/
     someotherfile.inf
  /folder 3/
     someotherotherfile.inf

今、私がやろうとしているのは、/mapcfgs/(フォルダーの名前)/*.new を /maps/(フォルダーの名前)/*.inf にコピーするスクリプトを作成することです。

私が遭遇した問題は、コピー ステートメントでその引数を使用する必要があるため、for ステートメントが検出した各ファイルのフォルダー名だけを取得する方法がわからないことです。

これまでの私のスクリプトは次のようになります。

@echo off
echo hello
for /f "usebackq tokens=* delims=\" %%a in (`dir /a-d /b /s mapcfgs *.new`) do copy "%%~dpna.new" "maps/%%~na.inf"
echo script finished

ただし、すべてのファイルを /maps/ にコピーするだけでなく、/maps の下の適切なフォルダー名にコピーする必要があります。これは、ファイルが mapcfgs の下にあるフォルダー名の名前に対応します。誰でもこれで私を助けることができますか?

4

1 に答える 1

1

これはうまくいくはずです。コマンド atm のみをエコーし​​て確認します。

@echo off
pushd "mapcfgs"
for /f "delims=" %%a in ('dir /ad /b') do (
echo copy "%%a\*.new" "..\maps\%%a\*.inf"
)
popd
pause
于 2013-06-15T07:26:59.707 に答える