作業内容
- 変更前フォルダと変更後フォルダ内のステップ数をかぞえチャオ!で比較
- 変更前フォルダと変更後フォルダ内の変更内容のDiffをとること
なくしたい作業
↑ドラック&ドロップ(以降D&D)
Winmergeも同じ作業があります。
なぜなくしたいのか
- まず自分で作業したら、かぞえチャオ!とWinMergeで差分(以降Diff)をとります。
- 次に、リーダーに見てもらい修正をして、Diffをとります(訂正箇所があれば再度Diffをとる[を繰り返す])
- 次に、主任?的な人に見てもらい修正をして、Diffをとります(訂正箇所があれば再度Diffをと、、、
という感じで、Diffをとる回数が多く、そのたびにD&Dをくりかえします。
gitが
調べた結果
かぞえチャオ!には自動実行オプションというものがある
1 拡張子 cas ファイルに情報を書き込む。
2 かぞえチャオ!起動
(設定済みのディレクトリのパスをみて比較してくれる)
D&Dしなくてよい‼
WinMeregeにはプロジェクトを保存という機能がある
1 プロジェクトを保存ボタンを押す
2 比較対象にしたディレクトリのパスを .WinMerge 拡張子のファイルに書き出し。
3 .WinMergeファイルを起動することで、ディレクトリのパスをファイルから読み込む。
D&Dしなくてよい‼
結果
以上、WinMergeの場合は、初回のみD&Dが必要だが、設定を保存するために、.cas .WinMerge ファイルを作成することによって、D&D作業がなくなり、次回からのDiffをとる作業が楽になる。
めでたしめでたし
ということで、バッチファイルをつくります。
なぜやるのか
D&Dしたくない
やったこと
.WinMerge .cas 拡張子ファイルの調査
.WinMergeファイルの中身
<?xml version="1.0" encoding="UTF-8"?>
<project>
<paths>
<left>C:\Users\hp\Downloads\kazoeciao\変更前</left>
<right>C:\Users\hp\Downloads\kazoeciao\変更後</right>
<filter>*.*</filter>
<subfolders>1</subfolders>
<left-readonly>0</left-readonly>
<right-readonly>0</right-readonly>
</paths>
</project>
.casファイルの中身
[AFTPATH]
C:\Users\hp\Downloads\kazoeciao\変更後
[BFRPATH]
C:\Users\hp\Downloads\kazoeciao\変更前
[EXEMODE]
1
調査結果
- .WunMergeファイルも、.casファイルも、パスを書き換えることで、設定を変更できそうだ
バッチファイル作成
初めてのバッチファイル作成だったので、とりあえず簡単そうな
メモ帳の起動をしてみる。
バッチファイルに
notepad
と書き込み、バッチファイルを起動。見事、メモ帳が起動しました。
試しに、
WinMerge
WinMerge.exe
を作成してみましたが、起動できず。今回やりたいのはこれじゃないのでスルー。
テキストファイルの出力
echo aaaaaa>> a.txt
以上のように、echo と >> を使うことによって、aaaaaa が記述された、a.txtファイルを出力します。
変数の使用
set strBefore=変更前
echo %strBefore%>> a.txt
set を使うことによって、変数を使用できます。右辺を左辺に代入します。
また、%で囲むことによって、変数を使用できます。
.casファイルの確認
[AFTPATH]
C:\Users\hp\Downloads\kazoeciao\変更後
[BFRPATH]
C:\Users\hp\Downloads\kazoeciao\変更前
[EXEMODE]
1
以上の内容をバッチファイルで出力します。
@echo off
chcp 932
set /P str="変更前、変更後フォルダのあるディレクトリをフルパスで入力(最後の\はいらない)"
set strBefore=%str%\変更前
set strAfter=%str%\変更後
echo [AFTPATH]>> sample2.cas
echo %strAfter%>> sample2.cas
echo [BFRPATH]>> sample2.cas
echo %strBefore%>> sample2.cas
echo [EXEMODE]>> sample2.cas
echo ^1>> sample2.cas
pause
/Pとかchcp 932とかでてきます。
/P
入力を受け付けます。
上記例では、
1 コマンドプロンプトに文字列を表示
変更前、変更後フォルダのあるディレクトリをフルパスで入力(最後の\はいらない)
2 エンターを押す前に入力された文字列をstr変数に代入
chcp 932
文字コードを変更してくれるそうです
SJISとかUTF-8とかです。
^
エスケープしてくれます
上記例では、^1とありますが、ただ1にしたら、[ON]だったかな?がテキストファイルに出力されたので、エスケープしました。
ほかにも、<とか>は特殊な文字のようで出力したければ、手前に、^が必要です。
@echo off
とか
pause
はよくわかっていませんが、みんながつけてたのできっと必要です。
pauseをとると、最後にエンターを押さなくても終了してくれるのでいらない気がしています。
batファイル実行
以上のファイルをbatファイルにして実行
フォルダのパスを入力しエンターで
.casファイルを出力してくれます。
改造
.Winmergeと.casをひとつのバッチファイルで出力します。
二つのバッチファイルを作ってもよかったのです。
しかし、自分の場合は、同じディレクトリを対象に、Diffをとるのです。
なので、.cas .WinMerge を同じバッチファイルから出力します。
バッチファイル完成
@echo off
chcp 932
set /P str="変更前、変更後フォルダのあるディレクトリをフルパスで入力(最後の\はいらない)"
set strBefore=%str%\変更前
set strAfter=%str%\変更後
echo [AFTPATH]>> sample2.cas
echo %strAfter%>> sample2.cas
echo [BFRPATH]>> sample2.cas
echo %strBefore%>> sample2.cas
echo [EXEMODE]>> sample2.cas
echo ^1>> sample2.cas
chcp 65001
echo ^<?xml version="1.0" encoding="UTF-8"?^>>> sample2.WinMerge
echo ^<project^>>> sample2.WinMerge
echo ^<paths^>>> sample2.WinMerge
echo ^<left^>%strBefore%^</left^>>> sample2.WinMerge
echo ^<right^>%strAfter%^</right^>>> sample2.WinMerge
echo ^<filter^>*.*^</filter^>>> sample2.WinMerge
echo ^<subfolders^>1^</subfolders^>>> sample2.WinMerge
echo ^<left-readonly^>0^</left-readonly^>>> sample2.WinMerge
echo ^<right-readonly^>0^</right-readonly^>>> sample2.WinMerge
echo ^</paths^>>> sample2.WinMerge
echo ^</project^>>> sample2.WinMerge
上記が完成したバッチファイルです。
sample2.cas
sample2.WinMerge
ファイルを出力してくれます。
大変だったこと
chcpを切り替えるタイミング
chcpですが最初は、つかっていませんでした。
.casファイルは正常に起動したのですが、.WinMergeはどうやらUTF-8形式らしく、chcpをつかいました。
また、最初は、
変数にフォルダパスのみを代入して、あとから変更前、変更後という文字列を追加していたのですが、
chcp 65001 をした後に、日本語を使用すると、文字化けするようで、そこの改良にすごく悩みました。
最終的には、最初に変数にすべて入力済みにして、そのあとに
chcpを使うことによって、問題が解決しました。
おもったこと
かぞえチャオ!を複数用意する
たくさんのかぞえチャオ!を用意しておき、ショートカットをスタートに置けば、楽にDiffが取れる。