トップ «前の日記(09-December-2016) 最新 次の日記(11-December-2016)» 編集

つれづれなるままに

これまでの訪問者人
本日の訪問者人  昨日の訪問者人
月齢21.6

AI | AIきりたん | Ast | Beat Saber | CeVIO | Cn | cover | de | Emacs | En | Es | fr | git | html | iPad | It | Just Dance | misc | MMD | MV | NEUTRINO | OVA | PC | PV | Ru | SF | SKK | stable diffusion | SynthesizerV | tDiary | Th | Vocaloid | VRC | VRChat MMD | Vsinger | Vtuber | was | YuNi | お茶 | アニメ | アメリカ | イラスト | オカリナ | カゲプロ | キズナアイ | テレビ | ノベル | ノーベル賞 | ビートセイバー | フィートセイバー | フランス | ラズパイ | ラノベ | 万葉語 | 世界 | 中国 | 予定 | 即売会 | 台湾 | 台風 | 合成してみた | 同人 | 地震 | 宇宙 | 家電 | 展示 | 描いてみた | 政治 | 旅行 | 日記 | 映画 | 時事 | 書道 | 歌ってみた | 歴史 | 海外 | 演奏してみた | 漫画 | 特撮 | 科学 | 英国 | 訃報 | 語学 | 踊ってみた | 陶笛 | 障害 | 音楽 | 飲み |

10-December-2016 にゃにゃにゃにゃ [長年日記]

_ [書道] 書道

いつものごとく行ってきました。

今年は来週まで。

_ [Vocaloid][歌ってみた] 脱獄

Neruさんの脱獄を まふまふ さんが歌ったやつ。

こっちは そらる さんが歌ったやつ。

動画は しづ さんだぜい。もう半年ぐらい前になるのか。。。

そして、そらる×まふまふのカヴァーによる前前前世。

_ [PC][Emacs] コマンドプロンプトでのコメント

昔から知られている方法、というか基本は rem コマンドを使うことですね。

行頭に rem を入れてやることで、行末までコメントとなります。

そして、知らなかったのですが、:: もコメントとして使えるらしいです。 : は goto で飛ぶ先のラベルを指定するものなのですが、飛んでくる先がなくても文法エラーとならないので擬似的にコメントとして使えるらしいです。

ただし次の場合はエラーになります。

if "%FOO%" == "" (
   ::コメント
)

if の中見が空であると判断されてエラーになるようです。その場合は rem を使う必要があります。 rem はコマンドですから、 if 文の中に処理が存在することになるわけですね。

if "%FOO%" == "" (
   rem コメント
)

で、なんでこんなことを書いていたかというと、行の途中からコメントにできないかを調べていたんです。

通常はできないのですが、これまた裏ワザ的なことで可能みたいです。

& や && や || のあとに rem 文を入れるんです。

なんでこんなややこしいことをやろうとしたかというと、Emacs で日本語パスが含まれたバッチファイルを開くときに、Emacs が文字列を判別できなかったので -*- coding:cp932-dos -*- を入れようとしたのですが、これを@echo off (バッチ内の処理をエコーしない指定)のあとに入れると Emacs は判別してくれないし、前に入れるとコマンドプロンプトで表示されてしまうからです。

この場合、見映えは関係ないですから、行頭で次のようにすれば良いということですね。

@echo off &rem -*- coding:cp932-dos -*-

まあ、こんなこと Emacs で バッチファイルを開こうという特種なことをしない限りは必要ないですね。

ついでに調べたのですが、コマンドプロンプトを最初から最小化して起動させてやるには star /min foo で最小化されるらしいので、この foo のところでバッチを起動するようにするんだそうです。で、自分自身を呼び出すようにしてやれば最小化されて起動すると。

単純にはバッチを二つ作って片方からもう片方を呼ぶというのがあるみたいですが、面倒なんで自分自身を呼び出す方法を。

if not "%~0"=="%~dp0.\%~nx0" (
   start /min cmd /c,"%~dp0.\%~nx0" %*
   exit
) 
(バッチ本体

もしくは次みたいに。

if not "%HOGE%"=="hoge" (
   set HOGE=hoge
   start /min cmd /c,"%~0" %*
   exit
) 
(バッチ本体

というわけで一連の処理の先頭部分を次のようにすればいいわけですね。

@echo off &rem -*- coding:cp932-dos -*-
::
if not "%~0"=="%~dp0.\%~nx0" (
   start /min cmd /c,"%~dp0.\%~nx0" %*
   exit
)
::
(バッチ本体


【PR】ブログへ記事を投稿して報酬ゲット!アフィリエイトのA8.net