#概要
bat作成時の個人用メモ
テンプレ
※テンプレ利用時の注意点
JenkinsのWindowsバッチコマンドの実行でこのbatファイルを利用すると
マルチバイト文字が入っている為エラーが発生します。
日本語部分を消してもらえれば使えます。
template.bat
@echo off
rem ------------------------------------
rem infomation
rem batの説明を記載
rem ------------------------------------
rem setting
rem 各種設定
set CurDir=%~dp0
call :CLEAR_SCREEN
rem ------------------------------------
rem 実装部
:EXEC
rem ------------------------------------
rem 終了処理
:END
:: pauseはデバッグ終了時に外す
pause
:: /B 呼び出し元へ戻る
exit /B
rem ------------------------------------
rem ログ消去
:CLEAR_SCREEN
cls
exit /B
rem ------------------------------------
rem EOF
引数表示
:: 引数1をそのまま表示
echo %1
:: フルパスにして表示
echo %~f1
:: 引数1をドライブ文字とパス
echo %~dp1
:: 引数2をファイル名のみにして表示
echo %~n2
:: 引数2をファイル名+拡張子のみにして表示
echo %~nx2
rem D:\tmpで引数1にhoge 引数2にfoo/poi.txtを入れて実行した結果
hoge
D:\tmp\hoge
D:\tmp
poi
poi.txt
ドロップされたファイルを操作
:: 1ファイルのみドロップされた場合 %1にパスが入っています。
echo %1
:: 複数ファイルドロップされた場合
for %%f in (%*) do (
echo %%f
)
コマンド結果を変数に入れる
:: コマンド結果を%%iに入れて 表示
for /f "usebackq" %%i in (`コマンド`) do (
echo %%i
)
:: 指定ディレクトリ以下の特定ファイル見つけてきて表示
for /f "usebackq" %%i in (`dir /b /s RomDir\*.zip`) do (
echo %%i
)
:: 直下のディレクトリを見つけてきて表示
for /f "usebackq" %%i in (`dir /b /ad`) do (
echo %%i
)
:: lsの結果を表示
for /f "usebackq" %%i in (`ls`) do (
echo %%i
)
アプリの起動/再起動
何かを起動時にデバッグツールを起動したい時に使用
startAppIfNeeded.bat
rem アプリが起動済みなら起動しない。起動してないなら起動する。
set AppFile=poi.exe
set AppPath=%CurDir%tool\%AppFile%
for /f %%i in ('tasklist /fi "imagename eq %AppFile%" 2^>^&1') do (
if /i %%i==%AppFile% (
goto END
)
)
start %AppPath%
:END
exit /B
下位互換性の無いデバッグツールを使う場合
すでに起動しているなら殺してから
使用可能なバージョンのデバッグツールを立ち上げる為に使用
restartApp.bat
rem アプリが起動済みなら再起動する。
set AppFile=poi.exe
set AppPath=%CurDir%tool\%AppFile%
for /f %%i in ('tasklist /fi "imagename eq %AppFile%" 2^>^&1') do (
if /i %%i==%AppFile% (
taskkill /im %AppFile% /f
)
)
start %AppPath%
:END
exit /B
フォルダ作成
:: フォルダがあったら消してから作成
if exist %TargetDir% (
rd /s /q %TargetDir%
)
mkdir %TargetDir%
```bat
:: フォルダが無ければ作成
if not exist %TargetDir% (
mkdir %TargetDir%
)
テキストファイルを1行ずつ読み込む
for /f "delims=" %%c in (poi.txt) do (
echo %%c
)
テキストファイルの読み込みを利用してVisualStudioプロジェクトをビルドする
slnファイルと同じディレクトリに配置して使用します。
別途記載したビルド対象ファイルを元にビルドを行います。
build.bat
@echo off
set ProjectRoot=%~dp0
rem ------------------------------
rem 設定
::1つ上のフォルダ名を取得してソリューション名として利用
for %%I in (.) do set SlnFileName=%%~nI%%~xI
::msbuild.exeへのパスを確保
set MicrosoftBinRoot="C:/Program Files (x86)/MSBuild/12.0/Bin/"
set MsBuildPath=%MicrosoftBinRoot%msbuild.exe
rem ------------------------------
rem 実装部
for /f "delims=" %%c in (configuration.txt) do (
for /f "delims=" %%p in (platform.txt) do (
%MsBuildPath% %SlnFileName%.sln /t:rebuild /p:PlatformToolset=v120 /p:Configuration=%%c /p:Platform=%%p
)
)
rem EOF
configuration.txt
Debug
Develop
Release
platform.txt
Win32
X64