-
Notifications
You must be signed in to change notification settings - Fork 0
Windows Batch
Tana edited this page Sep 7, 2019
·
8 revisions
cd /d %~dp0if errorlevel 1 exit /berrorlevel 1 の 1 はエラーかどうかを判断するコマンドの終了コード。
コマンドによっては 1 以上がエラーであるとは限らないので適宜指定する。
(例: robocopy コマンドは終了コードがビット フラグで表現されているので扱いが特殊)
robocopy コマンドを活用するとスマートなバックアップタスクを作成する事ができる。
@echo off
:: バッチ名 (ログファイル名に使用)
set BatchName=FullBackup
:: ログフォルダのパス
set LogDir=.\Logs
:: ログファイル名 (日別に作成)
set LogFile=%LogDir%\%BatchName%_%date:~0,4%-%date:~5,2%-%date:~8,2%.log
:: ログファイルを削除する経過日数
set LogDeleteDays=30
:: ========================================
:: 古いログファイルの削除
:: ========================================
echo 古いログファイルを削除します。(%LogDeleteDays% 日前)
echo.
forfiles /P "%LogDir%" /M "*.log" /D -%LogDeleteDays% /C "cmd /c del @path"
:: ========================================
:: バックアップ
:: ========================================
set CopyFrom=C:\timidity
set CopyTo=E:\Backup\Rowlet\C\timidity
set ExcludeDir=""
set ExcludeFile=""
call :MIRROR
set CopyFrom=C:\Users
set CopyTo=E:\Backup\C\Users
set ExcludeDir="Default" "defaultuser0" "*cache*" "Recent" "Temp" "Macromedia" "UnistoreDB" "UPPS" "Packages" "TileDataLayer"
set ExcludeFile="*NTUSER.DAT*" "*UsrClass.dat*" "*cache*" "*.tmp" "parent.lock"
call :MIRROR
set CopyFrom=D:\\
set CopyTo=E:\Backup\D
set ExcludeDir="System Volume Information" "$RECYCLE.BIN"
set ExcludeFile=""
call :MIRROR
:: ドライブ自体がコピー元になると隠し+システム属性が設定されるので解除する
attrib -H -S "%CopyTo%"
exit
:: ========================================
:: robocopyによるミラーリング
:: ========================================
:MIRROR
echo.
echo ミラーリングを行います。
echo [From]"%CopyFrom%"
echo [To ]"%CopyTo%"
robocopy "%CopyFrom%" "%CopyTo%" /MIR /R:0 /W:0 /LOG+:"%LogFile%" /NP /NDL /XJD /XJF /XD %ExcludeDir% /XF %ExcludeFile%
exit /b.NET Frameworkに付属しているビルドツールでビルドを行う。 Visual Studioの環境が無くてもビルドが可能となる。
@echo off
echo ビルドを開始します。
:: NuGet パッケージを復元するソリューション ファイル
set TargetSolution=XXX.sln
:: ビルドするプロジェクト ファイル
set TargetProject=XXX\XXX.vbproj
:: ビルド生成物の出力先フォルダ (※ %TargetProject% が起点)
set OutputPath=..\bin\XXX
:: NuGet パッケージ復元で使用するクライアント ツール
set NuGet=nuget.exe
:: .NET Framework 4.x のコンパイラ
set Compiler=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
cd /d %~dp0
if not exist "%NuGet%" (
echo.
echo NuGet パッケージのクライアント ツールが見つかりません。
goto BREAK
)
if not exist "%Compiler%" (
echo.
echo .NET Framework 4.x のコンパイラが見つかりません。
goto BREAK
)
echo.
echo NuGet パッケージを復元します。
echo.
"%NuGet%" restore "%TargetSolution%"
echo.
echo プロジェクトをビルドします。
echo.
"%Compiler%" "%TargetProject%" /p:Configuration=Release;OutputPath="%OutputPath%";PostBuildEvent="del /q *.xml"
:: Releaseビルド、出力先指定、ビルド後に.xmlファイルを全て削除している
echo.
pause
goto EOF
:BREAK
echo.
echo ビルドを中断しました。
pause