- 1 名前:デフォルトの名無しさん [2009/05/14(木) 11:29:31 ]
- 前スレ
【.cmd】 バッチファイルスクリプト %4 【.bat】 pc12.2ch.net/test/read.cgi/tech/1229955189/
- 810 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 19:17:26 ]
- ローカルでphpスクリプトを動かす際に一連の流れを
バッチファイルでまとめてしまおうと思ったのですが cd "ディレクトリ1" httpd.exe cd "ディレクトリ2" C:\php\php.exe batchtest.php このようなバッチファイルを作ったところ httpd.exeを起動したところで止まってしまい、httpd.exeを終了させないと 次の行に行きませんでした。 どのようにすればすべての処理が行われるでしょうか?
- 811 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 19:36:02 ]
- cd "ディレクトリ1"
httpd.exe taskkill /im httpd.exe cd "ディレクトリ2" C:\php\php.exe batchtest.php
- 812 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 20:56:35 ]
- start httpd.exe
- 813 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 07:38:21 ]
- >>811
ヒネリがないので笑えん。
- 814 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 12:59:02 ]
- >>813
素直な奴だな。 httpd.exeを終了させないとtaskkillが実行されないという二段オチなのに。
- 815 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 14:49:58 ]
- 下記のバッチ内、:mpexec_core にある if 文で落ちてしまいます。
書き方に何か問題があるのでしょうか? ideone.com/OvSYW
- 816 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 15:10:11 ]
- その行だけじゃわからないよ
環境変数に適切な値が入っているならちゃんと動くように見える echoの表示やエラーメッセージはどうなってんの? エスパー初級な解答 if "%xxx%" geq "%yyy%"のように""で括れば 環境変数が空の場合でも落ちる事はなくなるはず
- 817 名前:815 mailto:sage [2010/04/13(火) 15:25:07 ]
- >816
if "%MP_MAX%" geq "%MP_NUM%" ( に変更しても落ちました。 直前の出力は if 1 geq 1 ( なので、両方に1が入っていることは確認済みなのですが・・・。 エラーは 「コマンドの構文が誤っています。」 です。
- 818 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 18:43:38 ]
- エラーの詳細が出るようにバッチの先頭におまじないを書いておく
echo W 100 2 0 200 | debug
- 819 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 18:47:20 ]
- >>817
()のなかの命令が不適切なのでは?
- 820 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 19:54:16 ]
- ( ) の中で SET を使うのはやめといた方がいいよ
GOTO 文などに置き換えれば動くはず
- 821 名前:815 mailto:sage [2010/04/13(火) 20:06:10 ]
- >>819,820
()の中を関数化したら正常に動作しました。 ありがとうございました。
- 822 名前:デフォルトの名無しさん [2010/04/13(火) 20:43:32 ]
- すべてのウィンドウを「最新の情報に更新」にするバッチってありますかぁ?
- 823 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 22:48:22 ]
- ないよ
- 824 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 02:26:10 ]
- ありがとうございました。
- 825 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 17:07:20 ]
- 作成日時は%~t1で取れますかぁ?
- 826 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 17:14:10 ]
- ヘルプ見るの面倒
- 827 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 09:14:28 ]
- >>825
こういうこと? for /? より %~tI - %I ファイルの日付/時刻に展開します。
- 828 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 14:10:17 ]
- それ更新日時
- 829 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 18:25:03 ]
- >>828
827じゃないが、ファイルの日付が何になるかって、 環境変数で変更できなかったっけ? まぁ、できなくても、作成日時だったら、 他の手段で、何とでもなるから困らないけどね
- 830 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 20:08:20 ]
- それDIRCMD
- 831 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 06:44:59 ]
- >>814
だから、それは一目見て分かることで何の面白味もないの。
- 832 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 07:35:16 ]
- >>810
httpdが無いと動かないようなphpなら netstatとか使って、httpdが起動完了したことを検知しないと駄目な気がする まぁ、batchtest.php内で成功するまで待つって手もあるけど… あと、最後にhttpdを止める必要はないの? 動かしっぱなしなら、httpdをバッチで起動する意味はないと思うけど?
- 833 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 18:16:02 ]
- 馬鹿じゃないんだからそんなこといちいち聞かれなくても分かってますよ。
- 834 名前:デフォルトの名無しさん [2010/04/23(金) 20:48:27 ]
- バッチでキューを実装したいけど実装できますよね?
現状想定案 ■I/F QUE.bat -que|-deq -prm1 prm1=パラメタファイル 格納DIR 、入力元DIR、出力先DIR、ファイル名 ■que指定時 1.入力ファイル名と同名のファイルが格納先にないかチェック ↓ ↓ない ↓ 末尾0付格納 3.カウンタをインクリし2に戻る ■deq指定 1.格納先ディレクトリに末尾0ファイルがあるかチェック ↓ ↓ない ↓ エラー返却 ↓ ↓ある 2.ファイルを出力先に出力 ↓ 3.カウンタで小さい方からサーチ カウンタ-1でリネーム
- 835 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 23:48:57 ]
- 実装自体はいけそう
que指定時の2の処理が不明だったり 格納ファイルのフォーマット(ファイル名の規則)をどう定義するか カウンタの初期値をどこから設定するかなど細部が気になる
- 836 名前:デフォルトの名無しさん [2010/04/24(土) 00:35:27 ]
- >>835
携帯から書いたら改行多すぎと言われて、消しすぎたぜ… ■大体決めたこと 1.格納先のファイル名は入力ファイル名+連番。 1〜が数えやすそうかな。 2.返却値はキューの残数。 取出失敗時はマイナス ■迷ってること 1.格納先DIRパスとファイルの種類は1対1で対応させるかどうか? 2.キュー残数チェック用のオプションを実装するか? 3.もっと汎用的な設計がないか? (サンプル的なやつ) 4.バッチ暦10日だけどそもそも言語仕様的に無理とかないよね? できそうと聞いて安心したよ。 迷4以外はただの設計とアルゴリズムだし。 技術的に困ったらまたお願いします。
|

|