1 名前:デフォルトの名無しさん [2009/05/14(木) 11:29:31 ] 前スレ 【.cmd】 バッチファイルスクリプト %4 【.bat】 pc12.2ch.net/test/read.cgi/tech/1229955189/
784 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 14:17:18 ] ren *.bak *.
785 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 15:07:17 ] >>784 ありがとうございます できました
786 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 16:00:55 ] hogeよりはahoやbakaの方が好き おっと、kusoも使うなw
787 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 17:21:12 ] chinko manko unko shikko
788 名前:デフォルトの名無しさん [2010/04/06(火) 00:27:29 ] すみません。テキストファイルの中身の特定行だけ抜き出す方法を教えてください。 test.txt中身 --------------- morning hello bye --------------- 上のようなファイルがあったとして、1行目のmorningや、3行目のbyeを 変数やファイルに出力する方法はないでしょうか。 外部コマンドは使えないWindowsXP/2003環境です。
789 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 02:28:58 ] for /?
790 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 02:28:59 ] >>788 find使って >baka.txtとかで出力 うまく使えば一つのバッチファイルで色んなバッチファイルを作成することができるから便利
791 名前:デフォルトの名無しさん [2010/04/06(火) 07:40:04 ] findは外部コマンド
792 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 07:56:00 ] >>788 findstr /r "^morning$ ^bye$" > hoge.txt
793 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 09:11:31 ] >>791 空気読め馬鹿
794 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 09:28:43 ] 料理できないと買ってきた惣菜をならべるぐらいのことでも自慢するんだよ それ外で買ってきたんだろとあきれられてても本人は満足
795 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 20:43:40 ] バッチファイルでテトリス作って
796 名前:デフォルトの名無しさん [2010/04/06(火) 22:12:33 ] >>792 ありがとうございます。 説明が不足してたのですが、必ずしも1行目にmorningがあって、3行目にbyeがあるわけじゃない場合に 1行目、3行目を抽出って出来るんでしょうか。根本から違うやり方考えた方が良いですかね・・・。
797 名前:792 mailto:sage [2010/04/06(火) 22:28:25 ] findstrコマンドは/cオプションを指定しない場合は、 二重引用符内で半角空白区切りで指定されたキーワードを OR検索できるんだけど、 やりたいのは、特定キーワードで抽出したいんじゃなくて、 特定の行番号を抜き出したいってこと?
798 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 23:05:41 ] 下のようなのを作る場合変数iの引数は12個まで とかいう決まりがあるのでしょうか? for %%i in (%*) do xxxxx %%i pause このバッチファイルに引数となるファイルをドラッグ&ドロップしたら 「指定されたデバイス、パス、またはファイルにアクセスできません。 アクセス許可がない可能性があります。」 と言われます。ちなみに12個まではOKでした。
799 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 23:18:13 ] >>798 D&Dした複数ファイルのフルパス文字列の長さが限界に達したのでは? その12ファイルをもっと浅い(フルパスの短い)階層に移動させれば、 13ファイル以上もいけるかと。 Win9x系かNT系かでも変わってくると思う。
800 名前:799 [2010/04/06(火) 23:21:16 ] ごめん。NT系でもNT4.0や2000とXP以降で違うみたい。 support.microsoft.com/kb/830473/ja
801 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 23:25:24 ] >>799 ,800 たぶん、ファイルの長さだと思います。 ありがとうございました。
802 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 23:34:51 ] たぶん? 結局どうでもよかったのか
803 名前:792 [2010/04/06(火) 23:55:34 ] >>796 find /n /v "" test.txt|findstr /b /l "[1] [3]" または type test.txt|find /n /v ""|findstr /b /l "[1] [3]" または type test.txt|findstr /n /v ""|findstr /r "^1: ^3:" Mac環境から書き込んでてテストしてないから間違ってるかも。 特に3つ目の「findstr /n /v ""」は入力ファイルの全行に行番号出力になってないかも。
804 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 23:02:04 ] >>801 >たぶん、ファイルの長さだと思います。 ファイルサイズは関係ないだろ
805 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 23:09:06 ] <test.txt ( set /p x= call echo %%x%% >1.txt set /p x= call echo %%x%% >2.txt set /p x= call echo %%x%% >3.txt )
806 名前:spectre [2010/04/11(日) 18:40:33 ] アクティブな画面を「最新の情報に更新」にするバッチってありますかぁ? どなたかよろしくお願いします。
807 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 19:47:26 ] バッチでは不向きな気が… 簡単なものでよければ VBScript 辺りでどう? ' ## update.vbs ## Dim objWshShell ' WshShell オブジェクト Set objWshShell = WScript.CreateObject("WScript.Shell") If Err.Number = 0 Then objWshShell.SendKeys "{F5}" ' F5 を送信 Else WScript.Echo "エラー: " & Err.Description End If Set objWshShell = Nothing
808 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 19:53:59 ] しかしどうやって動かすんだ? 動いたときアクティブなウィンドウは?
809 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 20:05:00 ] 想定の範囲外です(キリッ 適当なフリーソフト使え
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以外はただの設計とアルゴリズムだし。 技術的に困ったらまたお願いします。