スポンサーリンク

開発時に,SVNリポジトリのディレクトリ上にコミットしておきたいバッチファイル


SVNリポジトリの,ディレクトリ上にコミットしておきたいバッチ。

「ワーキングコピー上で実行したくなるバッチ」と言い換えることもできる。

  1. ファイル表示系
    1. たくさんあるファイルの目次(リンク集)が欲しい
    2. TODOリストを抽出したい
    3. コマンドプロンプトを手軽に開きたい
  2. フォルダ作成系
    1. 今日の日付のフォルダを作成
    2. フォルダの雛形から,具体的な作業フォルダを生成したい
  3. ファイル削除系
    1. svn隠しファイルの削除
    2. 余計な拡張子のファイルを削除
  4. その他
    1. 手軽にSVN操作したい

ファイル表示系

たくさんあるファイルの目次(リンク集)が欲しい
@rem カレントディレクトリをブラウザで表示する
start firefox .

ファイルがたくさんあるのに,「目次」(リンク集)が無い,という場合に役立つ。

Firefoxでフォルダを開けば,サブフォルダはハイパーリンクとして表示される。

つまり,リンク集のような操作しやすいUIを提供する窓の働きをしてくれる。


TODOリストを抽出したい
findstr /n /s "TODO:" *.rb    >  todo.txt
findstr /n /s "TODO:" *.rhtml >> todo.txt

more todo.txt

コマンドプロンプトで,暗記するべき10の必須コマンド  (前半) ファイル処理系
http://language-and-engineering.hatenablog.jp/entry/20081001/1222857265

  • findstr
コマンドプロンプトを手軽に開きたい

「今見ているフォルダをカレントディレクトリにしてコマンドプロンプトを開きたい」という事であれば,

以下のフリーソフトを使って,右クリックメニューをカスタマイズすればよいだけ。

窓の手 ダウンロードページ
http://www.asahi-net.or.jp/~vr4m-ikw/...


しかし,共有フォルダの場合(UNCパスの場合)は例外。

そういう時は,以下のバッチが役立つ。

共有フォルダ上で,マウスだけで一発でコマンドプロンプトを開く方法 (UNCパスへのpushdをバッチクリックで済ませる)
http://language-and-engineering.hatenablog.jp/entry/20090305/p1


さらに,UNCパスが固定でよければ

cmd /k pushd \\フォルダ名

とだけ書いておけばOK。


フォルダ作成系

今日の日付のフォルダを作成
@rem 今日の日付(YYYYMMDD)のフォルダを作成

set base_dir=D:\dev\document
set today_dir=%base_dir%\%date:~0,4%%date:~5,2%%date:~8,2%
mkdir "%today_dir%"

@rem フォルダを開く
start explorer "%today_dir%"

作った直後にすぐ開く,というのが便利なところ。

※もしstartをつけないと,エクスプローラを閉じるまでコマンド窓も閉じてくれない。

バッチファイルで,ログや日報のローテーションをする (環境変数の部分文字列を抽出する方法)
http://language-and-engineering.hatenablog.jp/entry/20081205/1228457988

フォルダの雛形から,具体的な作業フォルダを生成したい

フォルダとファイルセットの雛形に対して,任意の名称を付与してコピーするバッチ。

@rem 任意の名称で作業用フォルダを生成するバッチ


@rem 機能名を入力

@echo 機能の名称を入力してください。※Alt+半角キーで日本語入力できます。
:enter_func_name
@set /p FUNCNAME=?
@if '%FUNCNAME%'=='' goto enter_func_name



@rem フォルダ生成

@xcopy /S /I /-Y /Q ".\_作業フォルダ雛形(コピー用)" ".\%FUNCNAME%_作業フォルダ"
@cd ".\%FUNCNAME%_作業フォルダ"
@ren "●●.bat" "%FUNCNAME%_実行.bat"



@rem 結果表示

@echo.
@echo -----------------
@echo 生成されたフォルダ:
@cd
@echo.
@dir /b
@echo -----------------
@echo.



@rem 終了

@pause

フォルダやファイルセットの雛形がある場合,それらを漏れなくコピーし,適切に一括リネームする。


xcopyのオプション:

  • /S : サブディレクトリも再帰的にたどる
  • /I : コピー先に,コピー元と同名のディレクトリを生成する
  • /-Y : 上書き確認をしない
  • /Q : コピー中のファイル名をいちいち表示しない

setのオプション:

  • /P : ユーザ入力値を環境変数に代入する

「コマンドプロンプト」ウィンドウで日本語入力を行う
http://trendy.nikkeibp.co.jp/article/...

  • Alt + 半角キーで日本語入力が可能になる

ファイル削除系

svn隠しファイルの削除

ディレクトリ内のSVNの隠しファイルを,サブフォルダも含め再帰的に全消去したい,という場合のコマンド。

for /f "tokens=*" %d in ('dir /b /s /a:dh *.svn') do rmdir /q /s "%d"

dirのオプション

  • /a:dh は,「隠しディレクトリ」という属性指定。

forの構文の説明

  • /f をつけて()内でシングルクオート付きのコマンドを書くと,コマンドの出力結果の各行に対して do のコマンドが実行される。
  • tokens=* とすると,1行全体を1トークン(1度に扱う処理対象)とみなす。
  • %d は,do文内でのトークン変数を指定しているだけ。

.svnディレクトリだけ列挙
http://dara-j.asablo.jp/blog/2008/09/...

余計な拡張子のファイルを削除

特定の拡張子(ホワイトリスト)にマッチしないファイルを検索し,1件ずつ削除確認しながら削除する。

@rem Railsのソースコードフォルダから,ソースコードではないファイルを削除する

@rem Railsのアプリケーションディレクトリに移動
cd /d d:\dev\rais_root\app

@rem 不要なファイルを検出
for /F "usebackq" %%i in (`dir /s /b /a-D ^| findstr /V ".*\.rb$" ^| findstr /V ".*\.rhtml$" `) do (
  @rem 削除確認しながら削除
  @del /P %%i
)

@pause


補足:

  • forコマンドにusebackqオプションを渡せば,inの中身にコマンド出力を利用できる。
  • dirコマンドの /a-D オプションは,出力からフォルダは除外するということ。

その他

手軽にSVN操作したい

SVN「更新」とか「コミット」は,バッチ化する必要は無いだろう。右クリックメニューで十分。

バッチにしておくと使えるのは,例えば・・・


このディレクトリのリビジョングラフを表示する(タグやブランチへの分岐状況を可視化する)

tortoiseproc /command:revisiongraph /path:.

このバッチが置いてあるフォルダは,ブランチに分岐しているのだ,という事が一目瞭然になる。

TortoiseSVN の自動化
http://tortoisesvn.net/docs/release/T...