kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

バッチファイルにて使える環境変数の書き方メモ

書き方 説明
"%~dp0" 実行したバッチファイル(%0)の存在するディレクトリ名を絶対パスで取得する。
"%~f0" 実行したバッチファイル(%0)の絶対パスを取得する。
"%~n0" 実行したバッチファイル(%0)のディレクトリなしファイル名(拡張子なし)を取得する。
"%~x0" 実行したバッチファイル(%0)から拡張子を取得する。

※「書き方」のダブルクォーテーションは、空白文字などを考慮して、付けています。

※2009/12/10 "%~x0"を追記しました。

コマンドライン ZIP圧縮コマンド

Windows環境で、コマンドラインからファイルをZIP圧縮する方法をメモします。

Windowsには標準でGUIのZIP圧縮ツールが付属していますが、そのツールは、コマンドラインからは使えないようです。コマンドラインからZIP圧縮をするためには、コマンドラインからの実行に対応したソフトウェアをインストールする必要があるようです。私が愛用している +Lhaca というツールでもコマンドラインからの実行に対応しているようですが、このツールでは、圧縮ファイルの作成先がGUIで設定した場所になってしまい、コマンドラインから自由に設定することが出来ないようです。手頃なツールを探すのも手間なので、私の身近にある、Java SDKに付属のjar.exeの利用を検討してみました。

次のようにZIPファイルを作成できました。ここで、オプションに"M"を付けていますが、これを付けることでマニフェストファイルを作成しなくなります。

set jar=C:\Java\jdk1.6.0_12\bin\jar.exe
%jar% cvfM aaa.txt.zip aaa.txt

指定ディレクトリ(第1引数"%1")直下の全ファイルを、カレントディレクトリへ、各々ZIP圧縮する場合は、次のようになります。

set jar=C:\Java\jdk1.6.0_12\bin\jar.exe
set oldcd=%CD%
cd %1
for %%a in (*) do (
	%jar% cvfM "%oldcd%\%%a.zip" "%%a"
)
cd %oldcd%

なお、ファイル名に日本語を含む場合は、ファイル名が文字化けしてしまいます。

バッチファイル 環境変数の値を参照する際に編集ができる

書き方 説明
%変数名% 環境変数の値を返却。
%変数名:置換前=置換後% 環境変数の値から、置換前に該当する文字列を、置換後に変換して返却。
%変数名:~位置% 環境変数の値から、指定位置以降の文字列を返却。位置がマイナス指定の場合後ろから数える。
%変数名:~位置,長さ% 環境変数の値のうち、指定位置から長さ分を返却。位置がマイナス指定の場合後ろから数える。長さもマイナス指定可能。

バッチファイル 標準エラー出力を標準出力にリダイレクト

Windowsにて、バッチファイルの出力結果を各種リダイレクトする方法です。よく忘れるのでメモしておきます。

標準エラーを標準出力へ

c:\tmp>ruby -e '$stdout.puts "abc"; $stderr.puts "def"' 2>&1
abc
def

c:\tmp>

標準出力と標準エラーをファイルへ。「2>&1」は必ず後ろに書く必要があります。

c:\tmp>ruby -e '$stdout.puts "abc"; $stderr.puts "def"' >tmp.txt 2>&1

c:\tmp>type tmp.txt
def
abc

c:\tmp>

Vista いつのまにか自動起動するようになったWindows Live Messengerを起動させない

先日、操作を間違ってWindows Live Messengerを起動してしまいました。すると、次回以降のWindows起動時に、Windows Live Messengerが自動起動して、サインイン画面を出してくるようになってしまいました。私は、アカウントさえ持っていないのに、うっとうしい限りです。

自動起動をやめる方法を調査しました。ネットですぐに見つかりました。それによると、「ログインして・・・」、という手順らしいです。でも、私はアカウントさえ持っていないのです。ログインしなくても自動起動停止できる方法が必要なのです。

仕方がないのでサインイン画面を少し眺めて見ました。すると左上の方に「?」マークのアイコンがあり、クリックして表示されるメニューから、メニューバーを表示できるようになりました。メニューバーから、ツール>オプションを選択し、表示されたダイアログボックスからサインインの「Windowsへのログオン時にWindows Live Messengerを実行する」のチェックをはずしました。これにて解決。

VistaにMSOffice2007をインストールしたらVistaのIMEが消えました

最近、Windows Vistaに乗り換え中で、以前使用していたMicrosoft Office 2007をインストールしました。インストールは問題なく進みました。正常に使用することも出来ました。でも、少ししてから気づいたのですが、IMEがOffice2007付属のIME2007になっていました。

どう直したらいいのかよくわかりませんでしたが、ネットで解決策を探してみると、Microsoftが情報提供していました。この手順のとおり実施すると、下のVistaIMEに戻すことが出来ました。とりあえず、ひと段落。

既定の日本語入力システムを Windows 標準の Microsoft IME に設定する方法
http://support.microsoft.com/kb/932104/ja

FTP自動化スクリプト

Windows環境から、FTPサーバにアクセスし、ファイルを取得する作業を自動的に行うための方法をメモします。

次のようなファイルを作成しておきます。(例:test.ftp

open <ホスト名>
<ユーザ名>
<パスワード>
bin
get <取得ファイルパス>
quit

上記ファイルを使用して、FTPコマンドを実行します。

ftp -s:test.ftp