スポンサーサイト

-------- --:--:-- --

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【コマンドプロンプト】バッチファイルで標準入力自動化

2012-02-11 22:16:42 Sat

EclipseでGoogleAppEngineの開発プラグインバージョンをあげたらデプロイできなくなった。

トークンみたいなの(PINコード的な?)を発行したから貼りつけろって言われるんだが、
どこに?って感じで、もう一度デプロイボタンを押下したらログイン画面に…。

ちょっとうざくなったのでコマンドからデプロイすることにした。

そしたらそっちもそっちでログインアカウントとパスワードを頻繁ではないものの何日かに一回は聞かれる。

ので、面倒くさいので回避する方法。

まずは普通に下記のようなバッチファイルを作成する。

rem appengine sdk があるパスへ移動。pythonでもjavaでも同じ。
cd C:\opt\appengine-java-sdk-1.6.0\bin
rem アップロードコマンドを叩く。
rem 下記はjavaのコマンド。
rem pythonはアップロードコマンドは異なるが標準入力周りはwindowsnのコマンドプロンプトの話なので一緒。
rem そのとき、「 < ファイルパス」で標準入力を指定する。
appcfg.cmd update C:\usr\local\eclipse3\workspace\project\war < C:\usr\local\eclipse\workspace\project\user.txt
pause

別ファイルで下記を用意する。

userid
password

これでOK。
ログインが自動化されて、バッチの起動だけでOKになりました。
もちろん、linuxの標準入力も同じ話しです。
gaeのログエクスポートもこれとタスクスケジューラー or CRON で完全自動化可能ですね。

スポンサーサイト

【Windows】バッチ処理で作業ディレクトリを作成するメモ

2010-03-01 01:15:49 Mon

よく、以下のようなディレクトリ構成を作るので、
バッチ処理でやってみました。

WORK\2010\201003\20100301
              ┣\20100302
              ┣\20100303
              ┣\20100304
              ┣\20100305
              ┣\20100306
              ┣\20100307
                    ・
                    ・
                    ・
echo off

set dirpath=C:\usr\
set makedir=201003

echo 作成ルートディレクトリ: %dirpath%
echo 作成ディレクトリ名    : %makedir%

pause

rem ここからバッチ処理

mkdir "%dirpath%%makedir%"

for /l %%i in (1, 1, 31) do (
	if %%i LEQ 9 (mkdir "%dirpath%%makedir%\%makedir%0%%i") else (mkdir "%dirpath%%makedir%\%makedir%%%i")
)

pause



ショボイのは、set dirpath=C:\usr\ みたく、\を付け忘れるとまったく動作しなくなってしまうというところ。
if 文一つで回避できるような・・・。

【DOS】ポートを使用しているプロセスを探す

2009-12-18 02:55:41 Fri

例えば、ApacheだったりIISだったりを起動したときに既にポートが使用されている旨のエラーメッセージがでてきたことはないだろうか?
僕は、よくTomcatがへたに落ちてしまって次にまたTomcatを起動したら前のTomcatのプロセス残っていて、
java.net.BindException: Address already in use:JVM_Bind
といって起動しないといったことが多々あります。
JBossAS起動しようと思ったらApacheをポート8080で起動してたとか。
こういう問題を切り分けるときに「netstat -ano」を使用する。

WS000061.jpg

↑ netstat の anoオプションでローカルで使用しているポートとPIDを出力。

PIDを調べるにはタスクマネージャを起動して 表示>列の選択 を選択。

WS000062.jpg

↑ PIDのチェックボックスをチェック状態にする。

これでポートを使用しているプロセスがわかります。
ローカルのポート3694を使用しているプロセスを調べてみます。
上図のコマンドプロンプトキャプチャよりポート3694を使用しているプロセスのPIDは4084となっていることがわかります。

WS000063.jpg

↑ PIDが4084をさがすと oracle.exe を発見しました。
つまり oracle.exe はこのときポート3694を利用しているということです。

もし、プロセスをキルするのであれば

kill -F -PID 4084
taskkill -F -PID 4084
※2009/12/23 修正しました。コマンドが間違っておりました。

とすればプロセスを強制終了することができます。


【DOS】プロンプトに表示する情報を一画面に【MORE】

2009-12-18 02:39:17 Fri

コンソールからなにかコマンドを実行したときに、一画面におさまらない情報を一画面に表示してとどめておいて、自分のタイミングで次ページもしくは次の行を表示するやり方メモ。

例えばコマンド 「mem /p」を実行すると次のようになる。

WS000059.jpg

↑ 一画面に収まりきらない。

これをコマンド「mem /p | more」として実行する。

WS000060.jpg

↑ コマンドのため一行上に移動しているが一画面におさまる。

more コマンドは、スペースキーで次ページ、エンターキーで次の行を表示します。

コマンド | more

【WINDOWS】java実行時の終了ステータスを取得【DOS】

2009-10-16 21:15:06 Fri

コマンドプロンプトからjavaを実行し、処理の結果として終了ステータスを表示させたい、
といった場合、UNIX系OSのシェルでは一般的に以下のように行うと思う。

<<シェル>>
echo $?

上記コマンドで、直前のプロセスの終了ステータスを取得・表示できます。

これをDOSコマンド(コマンドプロンプト)で行うにはどうするかというと、

<<DOSコマンド>>
echo %ERRORLEVEL%

上記のコマンドにて直前のプロセスの終了ステータスを取得・表示できます。

たとえば以下のようなソースをコンパイルして実行してみる。

package sample;

import java.util.Random;

public class ExitTest {
	
	private static final Random rndm = new Random();

	public static void main(String[] args) {
		Runtime runtime = Runtime.getRuntime();
		
		int retint = rndm.nextInt(256);
		System.out.println("プロセスが戻す値 : " + retint);
		runtime.exit(retint);
	}
}


これを%APL_ROOT_PATH%binフォルダにコンパイルしDOSコマンドで、
cd %APL_ROOT_PATH%
java -cp ./bin sample.ExitTest
プロセスが戻す値 : XX
echo %ERRORLEVEL%
XX


となる。

なお、参考URL先に違った視点での記述がある。

参考URL:http://d.hatena.ne.jp/mas-higa/20090814/1250258644

要は、

・ERRORLEVELに代入してはいけない

・ERRORLEVELはエラーの重要度として設計するべき
(個人的な見解では、成功:0か失敗:1以上かであれば特に意識は必要ない)

です。

名言集
全記事(数)表示
全タイトルを表示
ブログ内検索
Loading
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。