WinMergeと かぞえチャオ！にドラック＆ドロップをやりたくなかった


#作業内容

- 変更前フォルダと変更後フォルダ内のステップ数をかぞえチャオ！で比較
- 変更前フォルダと変更後フォルダ内の変更内容のDiffをとること

#なくしたい作業

![2018-11-17.png](https://qiita-image-store.s3.amazonaws.com/0/253014/a5b0e2d2-3f84-71f0-cc15-4fd4da4a154c.png)

↑ドラック&ドロップ（以降D&D）

Winmergeも同じ作業があります。

#なぜなくしたいのか

- まず自分で作業したら、かぞえチャオ！とWinMergeで差分(以降Diff)をとります。
- 次に、リーダーに見てもらい修正をして、Diffをとります（訂正箇所があれば再度Diffをとる[を繰り返す]）
- 次に、主任？的な人に見てもらい修正をして、Diffをとります（訂正箇所があれば再度Diffをと、、、

という感じで、Diffをとる回数が多く、そのたびにD&Dをくりかえします。
gitが

#調べた結果

###かぞえチャオ！には自動実行オプションというものがある

1 拡張子 cas ファイルに情報を書き込む。
2 かぞえチャオ！起動
（設定済みのディレクトリのパスをみて比較してくれる）

####D&Dしなくてよい‼
 
http://ciao-ware.c.ooco.jp/ft_casdt.html

###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ファイルも、パスを書き換えることで、設定を変更できそうだ

####バッチファイル作成

初めてのバッチファイル作成だったので、とりあえず簡単そうな
メモ帳の起動をしてみる。

バッチファイルに

```a.bat
notepad
```

と書き込み、バッチファイルを起動。見事、メモ帳が起動しました。

試しに、

```b.bat
WinMerge
```

```c.bat
WinMerge.exe
```

を作成してみましたが、起動できず。今回やりたいのはこれじゃないのでスルー。

####テキストファイルの出力

```a.bat
echo aaaaaa>> a.txt
```

以上のように、echo と >>　を使うことによって、aaaaaa が記述された、a.txtファイルを出力します。

####変数の使用

```a.bat
set strBefore=変更前
echo %strBefore%>> a.txt
```

set を使うことによって、変数を使用できます。右辺を左辺に代入します。
また、%で囲むことによって、変数を使用できます。

####.casファイルの確認

```
[AFTPATH]
C:\Users\hp\Downloads\kazoeciao\変更後
[BFRPATH]
C:\Users\hp\Downloads\kazoeciao\変更前
[EXEMODE]
1
```

以上の内容をバッチファイルで出力します。

```a.bat

@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　を同じバッチファイルから出力します。

#バッチファイル完成

```a.bat
@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が取れる。