- 1 名前:デフォルトの名無しさん mailto:sage [2011/02/28(月) 15:12:30.34 ]
- 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 前スレ 【.cmd】 バッチファイルスクリプト %6 【.bat】 hibari.2ch.net/test/read.cgi/tech/1277465356/ 【.cmd】 バッチファイルスクリプト %5 【.bat】 pc12.2ch.net/test/read.cgi/tech/1242268171/ 【.cmd】 バッチファイルスクリプト %4 【.bat】 pc12.2ch.net/test/read.cgi/tech/1229955189/ 【.cmd】 バッチファイルスクリプト %3 【.bat】 pc11.2ch.net/test/read.cgi/tech/1217860043/ 【.cmd】 バッチファイルスクリプト %2 【.bat】 pc12.2ch.net/test/read.cgi/tech/1197881068/ 【.cmd】 バッチファイルスクリプト %1 【.bat】 pc11.2ch.net/test/read.cgi/tech/1178281991/
- 58 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 19:35:38.13 ]
- if aーaーa == aaaaa echo bug
- 59 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 19:58:41.01 ]
- if aab==aーb echo x
- 60 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 20:37:35.38 ]
- バッチを直接使わずに自身を引数にWSHに渡すやり方が便利だ。
だがWSHはWindows 7だとデフォルトでは無効なんだっけか。 PowerShellを覚えなきゃいかんのかなぁ。
- 61 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 21:58:30.78 ]
- 同左ってことですね
- 62 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 22:31:24.41 ]
- そうさ
- 63 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 23:02:31.39 ]
- なんでそうなってる?
外人さんにとって、横線は同左なのか?
- 64 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 23:10:43.82 ]
- ttp://support.microsoft.com/kb/414445/ja
- 65 名前:sage [2011/03/10(木) 23:16:28.91 ]
- telnet通信越しにバッチを実行数と、たまに標準エラー出力に実行したコマンドが、
まるまる表示されるときがあるんですが、これなんですかね? バッチの動作は正しいんですが、気持ち悪いです。
- 66 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 23:44:27.22 ]
- つまり"コピー"が"コピピ"と同等なのかw
迷惑な仕様だな
- 67 名前:デフォルトの名無しさん mailto:sage [2011/03/11(金) 01:28:50.41 ]
- >>64
この問題とは違う気がする この事例だと"コピー"は"コピ?"となってーはワイルドカードみたいになるってこと?それか正規表現? >>58>>59見ると正規表現っぽいけど
- 68 名前:デフォルトの名無しさん mailto:sage [2011/03/11(金) 03:53:26.02 ]
- 「同左」文字の一覧
- 69 名前:デフォルトの名無しさん mailto:sage [2011/03/11(金) 06:42:21.93 ]
- 半角カタカナの"ー"も同じっぽいけどね
- 70 名前:デフォルトの名無しさん mailto:sage [2011/03/11(金) 08:28:01.29 ]
- if ゞ==々 echo ゞ=々
if not "ゞ"=="々" echo "ゞ"≠"々"
- 71 名前:デフォルトの名無しさん mailto:sage [2011/03/11(金) 11:26:30.13 ]
- あはは
- 72 名前:sage [2011/03/12(土) 12:29:23.18 ]
- Linuxでsyncに該当するコマンドってあります?
- 73 名前:デフォルトの名無しさん mailto:sage [2011/03/12(土) 14:08:30.15 ]
- >>72
sync
- 74 名前:デフォルトの名無しさん mailto:sage [2011/03/12(土) 16:45:25.01 ]
- if あはは==あは々 echo あはは==あは々
- 75 名前:デフォルトの名無しさん [2011/03/13(日) 12:13:23.68 ]
- >73
失礼しました。 Linuxでのsyncに該当するコマンドがwindowsであります?です。
- 76 名前:デフォルトの名無しさん mailto:sage [2011/03/13(日) 12:34:12.10 ]
- ハードウェアの安全な取り外し?
- 77 名前:デフォルトの名無しさん mailto:sage [2011/03/13(日) 12:53:26.18 ]
- >>75
technet.microsoft.com/en-us/sysinternals/bb897438.aspx
- 78 名前:デフォルトの名無しさん [2011/03/13(日) 21:27:59.41 ]
- >>77
まさにこれを探してました。ありがとうございます。
- 79 名前:デフォルトの名無しさん mailto:sage [2011/03/13(日) 23:59:38.64 ]
- IF文の変数の比較判定は、思わぬ落し穴がある
set a="b==c" if not %a%==%a% echo NOT EQUAL !!
- 80 名前:デフォルトの名無しさん mailto:sage [2011/03/14(月) 15:01:05.89 ]
- どこが?
おまえだけw
- 81 名前:デフォルトの名無しさん mailto:sage [2011/03/14(月) 16:24:57.67 ]
- set a="b==c"
if %a%==%a% echo EQUAL !! だけど?
- 82 名前:デフォルトの名無しさん mailto:sage [2011/03/14(月) 17:47:04.60 ]
- ふーん。環境により変わるのか?
教えてくれ>>80の先生
- 83 名前:デフォルトの名無しさん mailto:sage [2011/03/14(月) 19:18:01.59 ]
- 俺は Win2kSP4 だが
何度やっても NOT EQUAL !! って表示されるな 古い cmd.exe のバグかね?
- 84 名前:デフォルトの名無しさん mailto:sage [2011/03/14(月) 20:04:46.64 ]
- >79
ウチのWinXP(SP3)では何も表示されないな。 ついでに「 echo %a% 」を次の行に追加した場合は「 "b==c" 」と表示された。
- 85 名前:デフォルトの名無しさん mailto:sage [2011/03/14(月) 20:13:45.30 ]
- 今、XPのcmd.exeを拾ってきて試した
変数の展開が微妙に違うなw win2k >if not "b == c"=="b==c" echo NOT EQUAL !! NOT EQUAL !! winXP >if not "b==c" == "b==c" echo NOT EQUAL !!
- 86 名前:デフォルトの名無しさん mailto:sage [2011/03/14(月) 20:31:25.66 ]
- >>85
2kだと == が "" でエスケープされずに最初の == が比較演算子と認識されてるのかな? スペースの付き方の違いをみるとそう受けとれる 2kの cmd.exe は for にもバグがあるみたいだし結構ずさんなバグが他にもあるのかも otnx.jp/CMD/%A5%D0%A5%B0/
- 87 名前:デフォルトの名無しさん mailto:sage [2011/03/14(月) 21:54:24.82 ]
- >2kだと == が "" でエスケープされずに最初の == が比較演算子と認識されてるのかな?
>スペースの付き方の違いをみるとそう受けとれる もしそうならあとがコマンドとして実行されてエラーになるだろ?
- 88 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 00:50:09.59 ]
- win2k は "b と c"=="b==c" を 比較して echo してる
- 89 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 01:27:18.63 ]
- win2kのバグ付きcmd.exeで動くバッチw
@echo off set b=それは ^^" です。 set c=それは ^^" ではありません。 :x set a= set /p a=文字= if "%a%==%a%" ( echo %b% ) else echo %c% goto x
- 90 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 01:30:48.75 ]
- >>86-88
それなら「c"」までがif文となり、その後の「=="b==c" echo NOT EQUAL !!」 が、実行されてエラーになるんジャマイカ?
- 91 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 01:41:19.03 ]
- 「"b == c"=="b==c"」の全体の「"」が外されて
not「b」==「c"=="b==c」と解釈してると予想
- 92 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 01:50:38.93 ]
- バグってるソフトが、正常なエラーを出すかよw
- 93 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 01:55:32.05 ]
- >>91
それだと>>89は動かない
- 94 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 05:10:10.83 ]
- >>93
手元に2000無いから分からんが、どう動くの?
- 95 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 07:48:06.63 ]
- 文字=z
>if "z == z" (echo それは " です。 ) else echo それは " ではありません。 それは " ではありません。 文字=" >if "" == "" (echo それは " です。 ) else echo それは " ではありません。 それは " です。
- 96 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 08:45:46.87 ]
- win2kのcommand.comもバグってるようだ
- 97 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 11:37:36.79 ]
- >>95
その結果だけみるとダブルクォーテーションでエスケープ出来ない感じ?
- 98 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 13:11:59.49 ]
- " は == に対しては何の効果もない。
" が奇数個だとまずい。 " も比較の対象。
- 99 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 17:17:41.23 ]
- 2kなんかどうでもいいんだけど
- 100 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 18:48:54.30 ]
- Win2000のユーザはまだ多数いると思うぞ
- 101 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 22:03:56.89 ]
- MSですらサポートやめたOSにまで対応するのは愚かだよ
- 102 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 22:26:00.31 ]
- 2kなんかどうでもいいからサポート中のOSだけでも直してほしいな
- 103 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 22:41:15.80 ]
- 何を?
- 104 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 23:00:36.57 ]
- >>101
愚かだね。誰もそんな要求してないけど。
- 105 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 23:08:44.93 ]
- >>103
cmd.exeバグだらけなんだけど
- 106 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 23:14:38.46 ]
- ここにそんな事を書いても無駄
- 107 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 23:25:37.56 ]
- どこかに書けば直すとでも?
- 108 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 23:30:59.08 ]
- 否。でも無駄には変わりない。
- 109 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 23:37:12.84 ]
- だからなに?
- 110 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 23:41:30.73 ]
- >>106 >>108
ここにそんな事を書いても無駄
- 111 名前:デフォルトの名無しさん mailto:sage [2011/03/15(火) 23:48:08.15 ]
- そうですねw
- 112 名前:デフォルトの名無しさん mailto:sage [2011/03/16(水) 01:49:08.39 ]
- おまえ誰?
- 113 名前:デフォルトの名無しさん mailto:sage [2011/03/16(水) 09:27:16.44 ]
- \ /
\ 丶 i. | / ./ / \ ヽ i. .| / / / \ ヽ i | / / / \ た わ し で す -‐ ー __ __VV >:::::::::::::::::::: < _>':::::::: ::::::::< ,>'::::: ::::::::< >::::::: :::::::::< >;;::::: :::::::< >i::::::::::::::ゞ< 'ヘトハト! ‐- / / ヽ \ / 丶 \ / / / | i, 丶 \ / / / | i, 丶 \
- 114 名前:デフォルトの名無しさん mailto:sage [2011/03/16(水) 10:57:44.78 ]
- なんか面白いネタを頼む。愚痴は要らん
- 115 名前:デフォルトの名無しさん [2011/03/16(水) 23:32:55.60 ]
- 標準出力や、標準エラーを初期化する方法ってあります?
初期化って概念が、そもそも無いかもしれないですが。
- 116 名前:デフォルトの名無しさん mailto:sage [2011/03/17(木) 01:18:24.11 ]
- >標準出力
2>標準エラー
- 117 名前:デフォルトの名無しさん mailto:sage [2011/03/17(木) 15:43:02.49 ]
- >>115
初期化しないと生ずる不具合を教えてください 具体的にお願いします
- 118 名前:デフォルトの名無しさん mailto:sage [2011/03/17(木) 16:58:13.74 ]
- 追加になります。
- 119 名前:デフォルトの名無しさん mailto:sage [2011/03/17(木) 20:10:10.61 ]
- で、溜まったまま出てこないの? 便秘かよw
- 120 名前:デフォルトの名無しさん mailto:sage [2011/03/17(木) 20:36:18.44 ]
- Cでfflush(stdout)するようなもん?
違うか
- 121 名前:デフォルトの名無しさん mailto:sage [2011/03/17(木) 22:02:21.39 ]
- それ初期化っていうかよ
- 122 名前:デフォルトの名無しさん mailto:sage [2011/03/17(木) 22:02:55.98 ]
- ファイナライズとか?
- 123 名前:デフォルトの名無しさん mailto:sae [2011/03/18(金) 00:05:53.42 ]
- closeだっちゃ
- 124 名前:デフォルトの名無しさん mailto:sage [2011/03/18(金) 22:45:57.66 ]
- 他スレから誘導されて参りました。
環境は Windows XP Service Pack 3 です。 sample.batという名のバッチファイルを作って、その挙動を 1.commandstring = "C:\sample_prgm.exe" のようにcommandstringという変数に右辺の文字列を代入する。 (バッチファイル中に直接書きこむ) 2.commandstringが有効なパスであるならば そのパスをコマンドとして(関連付けどおりに)実行させる。 (つまりコマンドプロンプトにcommandstringの中身を打ち込んだのと同じ動作をさせる) というふうにしたいのですが、どう書けばよろしいでしょうか? Pythonで言うなら ####################### import os, os.path commandstring = "C:\sample_prgm.exe" if os.path.exists(commandstring) : os.system(commandstring) ####################### です。 これをbatファイルでやりたいのです。 よろしくお願いいたします。
- 125 名前:デフォルトの名無しさん mailto:sage [2011/03/19(土) 00:14:09.04 ]
- set commandstring=C:\sample_prgm.exe
if exist %commandstring% %commandstring%
- 126 名前:デフォルトの名無しさん mailto:sage [2011/03/19(土) 00:40:25.87 ]
- この手の方がパスにスペースを含むような使い方をするとはあんまり思わないけど
スペースぐらいはケアした方が良いような・・・
- 127 名前:デフォルトの名無しさん mailto:sage [2011/03/19(土) 00:42:01.80 ]
- クレクレマンにそんなに親切に対応する必要なし。
- 128 名前:デフォルトの名無しさん mailto:sage [2011/03/19(土) 11:10:36.49 ]
- 質問があります
お聞きしたいことはバッチファイルで出力されたログを上手く取るコツです 今はこのように非効率だとおもいながらもバッチファイルで標準出力やエラー出力をlog.txtに追加しています (このteeはここではパイプで渡された入力をファイルに追記するために使っています) ( NanikaSuruA.exe 2>&1) | tee -a log.txt ( NanikaSuruB.exe 2>&1) | tee -a log.txt 以下続く ただこの方法ではコマンドごとに記述することが手間と 標準出力を利用したいときにエラーが記録しづらく困っています。 例えば TokubetuNaNanika.exe > output.txt TokubetuNaNanika.exe は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 このようなときにパスが通っていないエラーが記録されていませんでした このときはrun_test.batを作りその中で処理したいbatを呼び出し表示されるものをログに追記するとよさそうに見えますが 一つのバッチファイルのにつき、さらにもう一つのログをとるためのラッパーのためのバッチファイルを用意することになります test.bat | tee -a log.txt もう少しいい方法はないかと質問させていただきました
- 129 名前:デフォルトの名無しさん mailto:sage [2011/03/19(土) 11:40:36.48 ]
- NanikaSuruA.exe >> log.txt 2>&1
TokubetuNaNanika.exe > output.txt 2>> log.txt
- 130 名前:124 mailto:sage [2011/03/19(土) 14:34:32.99 ]
- >>125
ありがとうございます! >>126 今後スペースが必要となったらその時自分で勉強して手を加えようとおもいます! ありがとうございました。
- 131 名前:デフォルトの名無しさん mailto:sage [2011/03/19(土) 15:56:21.84 ]
- >>128
再帰 if defined flag goto main setlocal set flag=1 %0 2>&1 | tee -a log.txt goto :eof :main
- 132 名前:デフォルトの名無しさん mailto:sage [2011/03/19(土) 18:57:36.42 ]
- >>128
ラッパー(test.bat)の中身 NanikaSuruA.exe NanikaSuruB.exe TokubetuNaNanika.exe > output.txt ラッパーの実行方法 test.bat 2>&1 | tee -a log.txt
- 133 名前:128 mailto:sage [2011/03/20(日) 15:35:57.84 ]
- ありがとうございます!
teeというコマンドを使っていたのはファイルと画面にも表示したいのをさっぱり忘れていました リダイレクトの方法>>129も含めて試してみます >>129 なるほど、、 自己再帰する手があるのですね >>132 用意する手間さえどうにかすればラッパーが一番楽そうですね
- 134 名前:デフォルトの名無しさん [2011/03/23(水) 11:49:37.29 ]
- start /B "C:\Program Files\R\R-2.11.1-x64\bin\Rgui.exe" %*
という内容のバッチファイルを書いて実行すると、期待したどうさに ならずに、コマンドプロンプトのロゴが出てしまいます。 解決策をご教示ください。 よろしくお願いします。
- 135 名前:デフォルトの名無しさん mailto:sage [2011/03/23(水) 12:20:56.26 ]
- お前が期待している動作ってのは何だよ
- 136 名前:デフォルトの名無しさん mailto:sage [2011/03/23(水) 16:49:02.50 ]
- start "title" "C:\Program Files\R\R-2.11.1-x64\bin\Rgui.exe" %*
/Bなんか使うな必要ないだろ
- 137 名前:デフォルトの名無しさん mailto:sage [2011/03/23(水) 20:44:39.82 ]
- >>135
無理すんなw
- 138 名前:デフォルトの名無しさん [2011/03/23(水) 21:33:06.74 ]
- >>136
ありがとうございます。startの引数を誤解していました。
- 139 名前:デフォルトの名無しさん mailto:sage [2011/03/23(水) 21:47:00.23 ]
- そもそもstart使う意味あんの?
- 140 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 00:51:32.62 ]
- バッチが止まるだろw
- 141 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 00:52:53.55 ]
- そんなのイロハだろ?
- 142 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 02:37:09.20 ]
- アロハだよ
- 143 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 10:43:40.20 ]
- >>140
最初/bを使ってた時の問題がロゴが出る事だけだったんなら 止まることは何の問題にもなってなかったんじゃ?
- 144 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 13:13:54.96 ]
- 頭悪いの?
- 145 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 14:07:08.91 ]
- >>144
わからんから説明してくれよ
- 146 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 14:14:35.95 ]
- >コマンドプロンプトのロゴが出てしまいます。
コマンドプロンプトが出てしまいます。
- 147 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 15:27:19.69 ]
- わからんちゅうのはなにがわからんのかなぜわからのかわからんからなw
- 148 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 19:12:04.02 ]
- 日本語に不自由してるみたいだな
- 149 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 20:38:56.65 ]
- んが1つ足りないようだな
- 150 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 21:07:30.89 ]
- うんん
- 151 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 21:08:50.98 ]
- vbsからbatをプロンプト非表示で起動したい
しかし このようにお願いします ファイルの場所 rscript\c1.vbs ↑実行ファイル rscript\tool\aw1.bat ↑vbsから実行されるbatファイル
- 152 名前:デフォルトの名無しさん mailto:sage [2011/03/24(木) 21:26:23.29 ]
- >>151
プロンプトを非表示でbatを実行するためのvbsって微妙にスレチな気も… c1.vbs WScript.CreateObject("WScript.Shell").Run "tool\aw1.bat", 0
- 153 名前:デフォルトの名無しさん [2011/03/25(金) 01:41:16.90 ]
- キー操作のCTRL+Zを自動入力させたいのですが、set /p input=0x1aとやってもうまくいきません。
どうすればうまくいくかご教授お願い致します。環境はWindowsXP SP3です。
- 154 名前:デフォルトの名無しさん mailto:sage [2011/03/25(金) 01:54:56.01 ]
- できません
- 155 名前:デフォルトの名無しさん mailto:sage [2011/03/25(金) 05:47:40.05 ]
- >>153
別プロセスのVBS立ち上げてSendKeys使えばOK
- 156 名前:デフォルトの名無しさん mailto:sage [2011/03/25(金) 18:23:54.67 ]
- >>154
あほにはできないw
- 157 名前:デフォルトの名無しさん mailto:sage [2011/03/25(金) 21:00:47.16 ]
- なにがやりたいのか?
- 158 名前:デフォルトの名無しさん mailto:sage [2011/03/26(土) 07:56:35.56 ]
- >>153
その1バイト分の0x1aをバイナリエディタで入力して 適当なファイル名で保存し、入力リダイレクトに使うってのはどう?
|

|