前提条件
背景
- 「ビルドした際にビルドしたファイルを別のフォルダにコピーし, コピー先のソフトを自動起動したい」という要望が入った為作成した。
- ビルドするファイル => AmongUsのMod
- 起動するソフト => AmongUs
環境
- windows10 及び 11
各ファイルが存在する 及び 環境変数で指定されているドライブ
ファイルおよび環境変数(フォルダ) | 役割 | 該当ドライブ |
---|---|---|
バッチファイル | C | |
%Develop% | プロジェクトファイルが存在しているフォルダ | E |
%AmongUs% | build先のフォルダ | C |
%AmongUs%\BepInEx\plugins\SuperNewRoles.dll | [*1] ビルドしたコピー対象のファイル (Modのdll) |
C |
%AmongUsTest% | 起動したいソフト(Among Us)が存在するフォルダ | C |
%AmongUsTest%\BepInEx\plugins | [*1]のコピー先のフォルダ | C |
コード
全文
@chcp 65001
@echo off
pushd %Develop%
dotnet build
if %errorlevel%==0 ( GOTO :Success ) else ( GOTO :Miss )
:Success
echo +-------------------------------------------------+
echo buildに成功しました
echo ファイルをテストフォルダにコピーして, 起動します
echo +-------------------------------------------------+
copy /y "%AmongUs%\BepInEx\plugins\SuperNewRoles.dll" "%AmongUsTest%\BepInEx\plugins"
start "" "%AmongUsTest%\Among Us"
pause
exit
rem End :Success
:Miss
echo +----------------------------+
echo buildエラーが発生しました
echo +----------------------------+
pause
rem End :Error
実行内容
- 環境変数で指定している, ビルドを行うフォルダに移動する。
- ビルドを実行する。
- ビルドが成功したか判定する。
- 3が成功していた場合 ファイルをコピーし, 失敗していた場合バッチファイルの実行を停止する。
- コピー先のフォルダのAmongUsを起動する。
- 入力待機し, 入力されたらバッチファイルの実行を終了する。
説明
前提記事
-
buildした後に, buildエラーが発生していなかった場合 対象のソフトを自動的に起動するバッチファイルの作成
- 此処で記載済みの内容の説明は省略。
pushd %Develop%
- 環境変数
%Develop%
で指定されているフォルダに移動する。-
dotnet build
を実行する為に,
プロジェクトファイル(SuperNewRoles.csproj
)が存在するフォルダにコマンドプロンプト上で移動する必要がある。 - 以降のコマンドはカレントディレクトリが何処であっても, 又ドライブを跨いでいても実行できる為,
pushd
コマンドの使用は一回のみ。
-
-
ドライブを跨ぐ移動が必要である為
cd
コマンドでは動作しない。 -
cd
が使用できない為, その代わりにpushd
を使用した。- ディレクトリのストックとしての用途では使用していない。
copy /y "%AmongUs%\BepInEx\plugins\SuperNewRoles.dll" "%AmongUsTest%\BepInEx\plugins"
copy /y "A_Folder\A'.dll" "B_Folder"
-
A_Folder
に存在するA.dll
というファイルを"B_Folder"
にコピーする。 -
copy /y "[コピーしたいファイルのパス]" "[コピー先のフォルダのパス]"
という構造になっている。
オプション : /y
- コピー先に, コピーしたファイルと同名のファイルが既にある場合,「上書き保存をするか」のウィザードを表示せずに, 上書き保存を行うオプション
- コピー先には必ずコピーしたファイルと同名のファイルがあり, 更にファイルを書き換える事を目的にしている為, このオプションを使用している。
exit
- コマンドプロンプトを終了する。
- このコードを使用しない場合, ビルド成功時(
GOTO
で:Success
に飛ばされた場合)も, ビルド失敗時のコード(:Miss
)を読む。-
GOTO
は該当するラベルに飛ばすだけの為, 飛んだ先のコードはラベルの存在によらず全て読まれる。
- 終了を明示する必要がある。
- 例
-
GOTO
でファイルの最後に移動する。 -
exit
でコマンドプロンプトする事で, バッチファイルの実行を停止する。
-
-
例2.
の方法を使用した理由 :- ビルド成功時と失敗時で最終の処理が異なる為。
- 成功時はコンパイルのログを見ない為, コマンドプロンプトを閉じる。
- 失敗時はコンパイルエラーを確認する為, コマンドプロンプトを閉じない。
- ビルド成功時と失敗時で最終の処理が異なる為。
- 例
-
参考
- ドライブを跨ぐフォルダ移動
- ファイルのコピー
- パスの指定方法 (環境変数でパスを指定する際ダブルクォーテーションが必要かの確認。)
- バッチファイルの実行を終了する