@echo off
VERIFY OTHER 2> nul
SETLOCAL ENABLEEXTENSIONS
if ERRORLEVEL 1 goto :FAILEDTOENTEREXTMODE
rem 設定環境のコピー元がバッチファイルの引数に与えられていることを確認する。
if %1 == "" goto :ENVSRCNOTSPECIFIED
rem コピー元に設定環境があることを簡単に確認する。
set FoundAnyEnv=n
for /d %%d in (%1\*) do if exist %%d\$DPM.com set FoundAnyEnv=y
if "%FoundAnyEnv%" == "n" goto :ENVSRCNOTFOUND
rem 主製品を列挙して設定環境の作成先がすべて同じであることを確認する。
if %2 == "" goto :ENVSRCNOTSPECIFIED
rem コピー元の設定環境が管理者ツールで管理されているか推定する。 (あくまで推定)
net localgroup AcadLocalAdmins 2>nul >nul
if ERRORLEVEL 1 (
	for /d %%d in (%1\*) do (
		if exist %%d\$DPM.lnk (
			for %%f in (%%d\$DPM.lnk) do if %%~zf gtr 41 goto :ENVISCONTROLED
		)
	)
)
rem コピーする。コピー元で削除されたファイルはコピー先で削除されないことに注意。
rem /PURGE オプションを追加するとコピー元で削除されたファイルはコピー先から削除される。
title コピー中...
robocopy %1 %2 /S /Z /XD *NetSetup*
title コピー終了
goto :ENDOFSCRIPT
:PRODUCTNOTFOUND
echo 製品がインストールされていません。
pause
goto :ENDOFSCRIPT
:MULTIPLEDATALOCATIONS
echo "場所の確認と一括変更" ですべての製品の設定環境を一箇所にまとめてください。
pause
goto :ENDOFSCRIPT
:ENVSRCNOTSPECIFIED
echo 設定環境のコピー元が指定されていません。
pause
goto :ENDOFSCRIPT
:ENVSRCNOTFOUND
echo 指定されたディレクトリに設定環境が見当たりません。
pause
goto :ENDOFSCRIPT
:ENVISCONTROLED
echo 設定環境のコピー元には管理者ツールで制限されているものが含まれています。
echo 管理者ツールをインストールするか、他の場所からコピーしてください。
pause
goto :ENDOFSCRIPT
:NOTMAINPRODUCT
echo product is not a main product.
pause
goto :ENDOFSCRIPT
:FAILEDTOENTEREXTMODE
echo このバッチファイルを使うにはコマンド拡張機能を有効にできる必要があります。
pause
goto :ENDOFSCRIPT
rem
:ENDOFSCRIPT
endlocal
