バッチファイルを UTF-8 で書く

現在の Windows では、コードページ指定をすればコマンドラインで UTF-8 を書くことができます。
そこで、バッチファイルを UTF-8 で書く際に気をつけるべき点をご紹介します。

UTF-8に変更したコマンドプロンプト
UTF-8に変更したコマンドプロンプト

コードページを変更する

コードページは、特定の文字コードを表す Windows 特有の番号で、SJISは 932、UTF-8 は 65001 です。
コードページを変更する為、バッチファイルの先頭で chcpコマンドを指定します。

@echo off
chcp 65001

改行コード

バッチファイルを UTF-8 で保存するとき、改行コードを LF (Unix形式)にしてしまいたくなりますが、これだと上手く動作しない場合があります。
改行コードは必ず、CR+LF (Windows形式)で保存しましょう。

対応フォントを指定

文字化けを防ぐ為に、コマンドプロンプトのプロパティ(または既定値)の「フォント」タブで、UTF-8 の表示に対応した等幅フォントを指定します。

「MSゴシック」や「MyricaM M」が対応しているようです。なお、残念ながら Microsoft 製の視認性が高い等幅フォント Consolas は対応していません。

表示できない文字もある

絵文字や外国語など、日本語の文字コードには無い文字は、上手く表示できないようです。指定したフォントには該当文字が存在しない為だろうと思います。

しかしコードページ指定が全く無意味なわけではなく、コードページに従って内部処理は正常に行われています。その為、Unicode の文字列をコマンドでアプリケーションに渡したり、リダイレクトでファイルに書き込むことが出来るようになります。

なお、コードページ 932 のままでも一部の Unicode 文字は表示されますが、ファイルに書き込む等すると文字化けします。

PowerShellの場合

PowerShellではコードページ 932 と 65001 の何れでも、echo コマンドなどをリダイレクトしてファイルに保存すると、UTF-16LE(BOM付き)として出力されます。

また、コマンドプロンプトでは 932 のままだと文字化けするようなケースでも、PowerShell だと上手く動作する場合がありますが、65001 に変更したほうが確実に動作しますので、それについては省略します。

※ 全て2018年04月時点の Windows 10 (64bit) で確認しました。

参考サイト

テーマ: ソフトウェア開発 - ジャンル: コンピュータ

プロセスの優先度を変更してアプリを起動する(Windows)

Windowsでアプリの優先度を予め変更して起動する方法は下記の通り。

  1. 任意の場所(デスクトップ等)に優先度を変更したいアプリのショートカットを作成。
  2. 作成したショートカットを右クリックしてプロパティを選択。
  3. 「リンク先」の先頭に cmd /c start "" /BELOWNORMAL を追加。

    入力例 cmd /c start "" /BELOWNORMAL "C:\Program Files\foo\bar.exe"

設定例(プロパティ画面)

こうして保存したショートカット経由で起動すると、アプリの実行優先度が変更されます。
優先度指定は/BELOWNORMALの部分で、下記のオプション名が指定できます。

オプション名 優先度
/REALTIME 最高 ※
/HIGH 高 ※
/ABOVENORMAL 通常以上
/NORMAL 通常
/BELOWNORMAL 通常以下
/LOW

/REALTIME/HIGHはWindows自体が操作不能になる可能性があります。動作を充分理解している場合以外は使わないようにしましょう。

多くのアプリは/NORMALで動作しているので、大抵は通常以下の/BELOWNORMALか通常以上の/ABOVENORMALで足りるでしょう。

動作はWindows 10で確認。8以前でもたぶん同様に設定できると思います。
以下、詳細解説(蛇足)。

cmdは必要?

この方法ではstartコマンド経由でアプリを起動しますが、start.exeという実行ファイルは存在せず、startはcmd.exeの機能である為、ショートカットする場合はcmd /c startという少々回りくどい指定をする必要があります。 なお、上記のように設定すると自動的にcmd.exeへのパスが補完されるので、パスまで入力する必要はありません。(C:\Windows\System32\cmd.exe等になる)

startコマンドの謎仕様

startコマンドには実行時のタイトルを指定するオプションがあり、単純に実行パスを "…" で括って渡すとこれがタイトルとして処理されてしまい、結果何も実行されません。なので、引用符で括ったパスを渡したい場合はダミーのタイトルが必要で、start ""と指定するのはその為です。

これ便利?

バックグラウンドで何か重い処理(動画のエンコード等)をしながら作業する場合に便利。
時々、XnConvertを使って画像の一括変換をするのだけれど、優先度が通常で起動する上、優先度を変更する設定も無いようで、変換中に他のプロセスの操作が重くなって困った。タスクマネージャから毎回変更してたけど面倒すぎたので、何かこうシンプルな解決策はないかなーと。

他の方法としては、こういうソフトもあるみたい。

それにしても、単純にプロパティで優先度くらい変更できてもいいのになーと思う。

参考サイト

テーマ: Windows10 - ジャンル: コンピュータ

「Dropboxに移動」を右クリックメニューから削除する

WindowsにDropboxをインストールすると、エクスプローラーの右クリックメニュー(コンテキストメニュー)へ「Dropbox」に移動 が追加されます。 しかしDropboxの設定には、この項目をメニューから削除する設定がありません。 その為、レジストリを編集する事になりますが比較的簡単に非表示化できますので、その方法をご紹介します。

対象OS

Windows 10 及び Windows 8, 7, Vista

変更の前に

レジストリの変更方法が解る方向けに書いています。レジストリに間違った変更を加えると Windowsの動作に支障をきたす可能性もありますので、変更作業の際はくれぐれもご注意ください。

設定方法

下記の手順に従って設定します。

  1. regedit(レジストリエディタ)を起動します。
  2. HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions」を開きます。
  3. 「右クリック>新規>キー」で新しいキー「Blocked」を作ります。
  4. Blockedを開き、「右クリック>新規>文字列値」で名前に「{ECD97DE5-3C8F-4ACB-AEEE-CCAB78F7711C}」と入力します。
  5. レジストリエディタを閉じて、Windowsを再起動します。(再サインインかエクスプローラの再起動でもOK)

レジストリエディタでShell Extensions\Blockedを開いた所

設定後は「Dropbox」に移動 が表示されなくなります。

表示状態に戻すには

この設定は特定のメニュー項目を非表示にしているだけなので、上記で追加した文字列値をBlockedから削除すれば設定前の表示状態に戻すことも可能です。

関連情報ページ

テーマ: Windows10 - ジャンル: コンピュータ

エクスプローラでサムネイルの枠を外して大きく表示

枠無し(Treatment=0)の設定例

エクスプローラで表示レイアウトを特大アイコン~中アイコンにすると、画像や動画にはサムネイルが表示されます。 その際、サムネイルの外側にドロップシャドウやフィルムのような枠(効果)が付く為、そのぶんだけサムネイル自体のサイズが小さくなってしまいます。
この枠はオプションでは変更できませんが、レジストリを操作すれば枠を無くしたり別の枠に変えたりすることが出来ますので、方法をご紹介します。

対象OS

Windows 10 (Anniversary Update含む) 及び Windows 8, 7, Vista

変更の前に

それほど複雑ではないもののレジストリを変更しますので、変更方法が解る方のみ行ってください。 また、レジストリに間違った変更を加えると Windowsの動作に支障をきたす可能性もありますので、変更作業の際はくれぐれもご注意ください。

レジストリエディタでimageを開いた所

枠の変更

動画のサムネイル枠を変更するケースで説明します。

  1. regedit(レジストリエディタ)を起動します。
  2. 「HKEY_CLASSES_ROOT\SystemFileAssociations\video」を開きます。
  3. DWORD値の「Treatment」 をダブルクリックして開き、数字を入力します。

入力する数字は0から3で、それぞれ下記の枠になります。

効果
0 枠無し
1 ドロップシャドウ (右下方向の影)
2 1と同じ (Vistaではフォトボーダー)
3 フィルムストリップ (フィルム風の枠)

画像の場合は「HKEY_CLASSES_ROOT\SystemFileAssociations\image」を開いて同じように変更します。
設定値は画像には 0、動画には 0か 1がお薦めです。

アイコンの有無

初期状態では、動画のサムネイルの右下にはファイル種別毎のアイコンが付くようになっています。画像のサムネイルには付きません。このオーバーレイアイコンの有無も、レジストリの同じ場所で変更できます。

少し分かり難いのですが、Treatmentと同じ場所に、文字列値「TypeOverlay」が無い状態だと拡張子別のオーバーレイアイコンが表示されます。文字列値「TypeOverlay」有り、中身が空だとアイコンが非表示になります。
(TypeOverlayは表示アイコンを直接指定する為の項目で、空の値は拡張子別アイコンを無効にする。)

もっとも、初期状態のままで特に支障は無いので、この設定を変更する必要はあまり無いでしょう。

変更後は再起動

変更が完了したらレジストリエディタを閉じて、再起動またはサインアウトしてください。設定が適用されサムネイルのスタイルが変わります。

参考

テーマ: Windows 全般 - ジャンル: コンピュータ

エクスプローラで移動や削除が重いのを改善する(Windows10)

Windows10にして以来、エクスプローラーのファイル操作全般が変に重くて困っていたのですが、解決方法を見つけました。
ファイルの移動や削除、リネーム等の際に暫く固まるような引っ掛かりがある場合、これで改善する可能性があります。

  1. エクスプローラーのメニューバーから「表示>オプション」を選択。
  2. 「全般」タブ内の「プライバシー」の「最近使ったファイルをクイックアクセスに表示する」と「よく使うフォルダーをクイックアクセスに表示する」の二つのチェックを外す。
  3. そのすぐ下にある「エクスプローラーの履歴を消去する」の消去ボタンを押した後、OKを押す。

ファイルの履歴が溜まることで重くなっていたようなので、同様の原因であればこれで劇的に軽くなります。もし違う原因でも履歴が消える以外は特に副作用は無いと思いますので、一度お試しください。

フォルダーオプションのスクリーンショット

テーマ: Windows 全般 - ジャンル: コンピュータ