バッチファイルで”%~dp0″等の意味につて

バッチファイルで “%” や “~” がを記述していますが、ぱっと見わかりにくいです。
うまく利用すればかなり便利になるとは思いますが、バッチファイルを編集するたびに分からなくなって調べ直しているのでまとめておきます。
 
 
引数の取り込み方

%0 バッチファイル自身
%1 バッチファイルの1つめの引数
%n バッチファイルのn個目の引数(nを数字に置き換える)

 
 
[~]を付けるとディレクトリバスやファイルパスから[“]を削除して展開する

%~0 全ての引用句[“]を削除して%Iを展開する
%~f0 %0を完全修飾パス名に展開する
%~d0 %0をドライブ文字だけに展開する
%~p0 %0をパス名だけに展開する
%~n0 %0をファイル名だけに展開する
%~x0 %0をファイル拡張子だけに展開する
%~s0 展開されたパスは短い名前だけを含む
%~a0 %0をファイルの属性に展開する
%~t0 %0をファイルの日付/時刻に展開する
%~z0 %0ファイルのサイズに展開する
%~dp0 %0をドライブ文字とパス名だけに展開する
%~nx0 %0をファイル名と拡張子だけに展開する
%~fs0 %0を完全なパスと短い名前だけに展開する
%~ftza0 %0をDIRコマンドの出力行のように展開する

 
ここで”0″は、%0(バッチファイル自身)です。
他の数字に置き換えができます。
 
 
 
このあたりの詳しい説明は、コマンドプロンプトでfor /?を実行すると詳細が見られますのでそちらも見て下さい。
 
 

gccでコンパイルしたときの文字化け対策(2)

gccで表示する文字の文字化け対策です。
gccでコンパイルする人以外は参考にならないと思います。
 
 
文字コードsjisのソースファイルに含まれる、「ソ」・「表」などが文字化けしてしまう症状が出ました。
“表示ソフト”と表示するソースファイルを、gccでコンパイルすると「warning: unknown escape sequence:」と警告が出ますが、コンパイルは成功しています。
生成した実行ファイルを実行すると、文字化けしてしまい読み取ることができません。
 
文字化けする原因としてはgcc特有のもので、ソースコードに含まれる一部の2バイト文字に対応していないとのことです。
今回の場合ですと、sjisの「ソ」は16進数で「83 5c」で表されるので、「5c」の部分をエスケープシーケンスの「\」として解釈されてしまうたため、未知のエスケープシーケンスが含まれますと警告が出るようです。
同じように、「表」「貼」「能」「予」「禄」等もsjisの文字コードに「5c」が含まれるので文字化けします。
 
 
文字コードsjisを使用する場合、2バイト目にエスケープシーケンスと同じ値が含まれる場合は、入力した文字の後ろに「\」を入れることで正常に表示することができます。
 

“表示ソフト”と表示したい場合は、”表\示ソ\フト”と入力する。
 
「\」を入れることで、コンパイル時に警告が出なくなり、文字化けせずに表示できるようになります。
 
 
この問題は、gccでコンパイルする上では避けようがないもののようです。
 
 

gccでコンパイルしたときの文字化け対策

C言語で記述したソースファイルをgccでコンパイルした実行ファイルを実行すると日本語が文字化けしてしまい表示が読めなくなってしまう。
 
文字化けが発生する原因としては、使用しているターミナル(terminal)の文字コードとソースファイルの文字コードが一致していない場合発生することが多いそうです。
 
文字化けしない対策として、ソースファイルの文字コードを「sjis」にしたところgccでコンパイルした実行ファイルで文字化けが直りました。
 
 
今まで文字コードをあまり気にしませんでしたが、gccを使用する上では気をつけないとならないみたいです。
VC++はテキストエディタが統合されているので気にしなくても問題がなかったのかも・・・
 
 

.batファイルを実行するとnullのファイルが作成されてしまう

バッチファイルにnullコマンドを記載して実行すると、実行したフォルダ内にnullファイルが作成されてしまいました。
原因を調べてみると、Windowsのバッチファイルには「null」ではなく「nul」と入力しないとならないみたいです。
 
こんな単純なことですが、結構な時間はまってしまいました・・・
 
 

画面の更新を制御する

VBAで、マクロ実行中に画面の更新を制御する。
画面の更新を停止することで実行速度が速くなる。
 
 
Application.ScreenUpdating プロパティ
 

  True      画面の更新する
  False     画面の更新を停止する
 

 
 

ワークシートの表示と非表示

VBAでワークシートを表示や非表示にする場合は「Visible」を使用して行う。

 
また、ワークシートが表示状態か非表示状態かを確認する場合は、ワークシートのVisibleの値を確認する。
 
表示状態の値      「 -1 」
非表示状態の値   「 0 」
 
 

警告メッセージの表示制御する

VBAで、マクロ実行中に警告メッセージの表示を制御する。
 
 
Application.DisplayAlerts プロパティ
 

  True      警告メッセージの表示をする
  False     警告メッセージの表示をしない
 

 
 

ワークシートの表示と非表示を行う

VBAで、シートの表示と非表示はVisibleプロパティを使用して行う。
 
 
Worksheet.Visible プロパティ
 

  True      ワークシートを表示する
  False     ワークシートを表示をしない
 
ワークシート「Sheet1」を非表示にする場合

 
ワークシート「Sheet1」を表示する場合

 
 
 
ユーザの操作で、ワークシートを再表示させたくない場合は「xlVeryHidden」の定数を設定する。
 
ワークシート「Sheet1」を非表示にする場合

 
ワークシート「Sheet1」を表示する場合

 
 
 
VBAの定数についてはリンク先のリファレンスを参照して下さい。
https://msdn.microsoft.com/ja-jp/library/jj692807.aspx