1 名前:デフォルトの名無しさん mailto:sage [2011/09/13(火) 01:20:20.25 ] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 前スレ 【.cmd】 バッチファイルスクリプト %7 【.bat】 hibari.2ch.net/test/read.cgi/tech/1298873550/ 【.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/
301 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 23:55:48.28 ] msg * /time:60-現在の秒数 sleep
302 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:18:03.47 ] セッション名の取得エラー 1702
303 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:34:43.64 ] :loop if not 60-現在の秒数 == 00 goto loop タスクを実行 :loop2 if 60-現在の秒数 == 00 goto loop2 goto loop
304 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:46:53.69 ] コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。 コマンドの構文が誤っています。
305 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:48:02.09 ] 役立たずばかりだな
306 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 00:50:05.81 ] おまえの役に立ってたまるかぼけ
307 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 01:00:26.80 ] おれんちはsleepあるからいいよw
308 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 19:30:14.31 ] 1秒スリープ echo WScript.Sleep(1000) >sleep.vbs cscript //Nologo sleep.vbs
309 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 20:33:07.77 ] >>294 >>296 osのバージョンによっては入っていないんだな >>301 セッション名の取得エラーって知っているか? >>303 アホか負担が高すぎる >>307 何も解決してない答えだな 汎用性がないわ >>308 これは使えるな
310 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 23:24:06.28 ] 厳密じゃなくて適当に1秒待ちで良いなら ping -n 2 127.0.0.1 1>nul OS制限はまず無いし
311 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 00:06:16.93 ] start /wait "" mshta vbscript:Execute("GetObject(""winmgmts:{impersonationLevel=impersonate}""). ExecNotificationQuery(""select * from __InstanceModificationEvent where TargetInstance isa 'Win32_LocalTime' and TargetInstance.Minute = 0 and TargetInstance.Second = 0"").NextEvent:Close")
312 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 00:15:53.25 ] pingは環境によってFWでブロックされて止まってしまう
313 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 00:24:34.55 ] アホには>>303 がちょうどよいw
314 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 00:41:31.13 ] mshta javascript:setTimeout('close()',10000)
315 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 10:04:22.81 ] そもそも最初は、「毎時00分に」なのに「00秒に」と誤解した上に、途中から「1秒待ち」の話になってる。 へぼプログラマがバグを作りこむ理由の一端がわかった気がする。
316 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 15:37:58.48 ] 応用のできないアホはスルーで
317 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 15:40:21.60 ] msまで追求するのが漢道
318 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 16:12:00.10 ] >>315 へぼプログラマがバグを作りこむ理由の一端がわかった気がする。
319 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 17:19:17.93 ] >>316 応用? 00分の検出と、1秒待ちってぜんぜん違う機能だぞ。 どう応用するのか、見せてもらえるかな?
320 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 17:26:48.84 ] >>319 なんでその2つを同じ階層で考える?
321 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 17:32:09.01 ] 応用のできないアホはスルーで
322 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 17:36:30.86 ] まぁまぁ落ち着けよお前ら 一番悪いのは>>303 なんだから
323 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 17:50:30.16 ] >>320 え゛っ、応用じゃないの? (w 応用見せてみと言うと階層が違うとか、なんだかねぇ。
324 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 18:00:38.70 ] おい単芝vipに帰れよ
325 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 18:21:54.10 ] HP機だと c:\hp\bin\sleep.exe が使えるよ
326 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 18:25:01.24 ] >>324 お前が帰れよ、つーかででくんな。
327 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 18:32:56.02 ] powershell start-sleep
328 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 18:42:28.32 ] 'powershell' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
329 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 18:43:43.94 ] 'c:\hp\bin\sleep.exe' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
330 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 19:01:18.78 ] hpの事なんて聞いてねえよ!
331 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 19:05:48.99 ] おまえなんかに言ってないよw 自我肥大するんじゃねーよw
332 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 23:10:10.73 ] 自我肥大はスルーで
333 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 23:18:48.73 ] pause /t:n
334 名前:デフォルトの名無しさん mailto:sage [2011/11/20(日) 23:59:17.74 ] >>292 やったな、おい!大漁じゃねーか!雑魚ばっかりだけど!
335 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 00:35:05.56 ] これってそんなに難しい質問なのか
336 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 00:45:48.84 ] 応用のできないアホには
337 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 03:33:48.01 ] choice /t 10 /d y
338 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 03:47:51.65 ] diskpart /t 15
339 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 05:32:44.27 ] >>333 続行するには何かキーを押してください . . . >>337 'choice' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 >>338 DiskPart はパラメータを処理できませんでした。 詳細については、'diskpart /?' を使用してください。
340 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 09:26:48.83 ] cmd.exe組み込みコマンドと同名のプログラムがPATH中に存在するとき、 組み込みコマンドを指定する方法はありますが? mkdirはmdに変更することで逃げられますが、この方法が使えないとき はどうすればいいでしょうか?
341 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 13:42:17.35 ] 似たような機能のtoolを入れる
342 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 14:41:11.23 ] >>340 うそこけ 組み込み優先でないってか?
343 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 16:03:37.77 ] >>341 それすると何がどうなるって?ばかか
344 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 16:30:39.06 ] >>340 逆ならいくらでもあるが
345 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 16:39:27.54 ] >>340 setlocal set path= 組み込みコマンド endlocal
346 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 17:28:38.33 ] >>342 うーん。試してみたらコマンドプロンプトは組み込み優先でした。 実はnmakefileの中だったのです。>>345 を採用することにしますた。 set path= & 組み込みコマンド
347 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 17:35:24.19 ] 最初からそう言え cmd /c 組み込みコマンド
348 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 22:14:14.00 ] timeout /t 10
349 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 06:18:57.26 ] NDWord: /t
350 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 10:59:35.06 ] 'NDWord:' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
351 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 12:48:26.59 ] 整合性レベルの低で起動する簡単な方法ないですか?
352 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 12:57:18.84 ] %~tIは更新日時のようですが、作成日時は取れないんですか?
353 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 13:30:43.72 ] start /low
354 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 13:56:05.67 ] for /f "usebackq tokens=1,2*" %i in (`dir /tc "%~f1"^|find "%~nx1"`) do (set a=%i%j&call echo %a%)
355 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 14:04:16.98 ] %i%jじゃ繋がっちゃうだろ
356 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 21:16:09.49 ] "%~nx1"が"ファイル"だとだめだろ
357 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 21:24:25.23 ] "eol= "ってやればうまく行きそうだが、行かん。遺憾だ
358 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 21:39:46.47 ] eol=の仕様は謎だな
359 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 21:46:13.61 ] findstr /r /c:"^[^ ].*%~nx1"
360 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 21:59:25.95 ] for /f "usebackq tokens=1,2*" %i in (`dir /tc "%~f1"^|find "%~nx1"`) do (if not defined a set a=%i %j&call echo %a%)
361 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 22:05:59.46 ] だからー "%~nx1"が"ディレクトリ"だとだめだろ
362 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 22:08:54.13 ] find "/" がええかも
363 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 23:34:25.37 ] for eolでggったら"delims= eol= "でいいみたいね
364 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 01:56:38.52 ] そのじゃディレクトリの作成日時は取れんな
365 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 12:30:43.59 ] start cmd /c pause とすれば、別プロセスで開始したコマンドの終了を待たずに次に進めるけど、 (start cmd /c pause & start cmd /c pause) | sort などとパイプすると、startしたアプリをすべて終了するまで次に進まなくなってしまうのを回避する方法ありません? (start cmd /c pause & start cmd /c pause) > hoge.txt リダイレクトなら普通に次に進めるのですが…
366 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 16:12:04.51 ] 意味不明だな (start cmd /c pause & start cmd /c pause) | sort で止まるのは当然だろw何がしたい? start cmd /c "pause | sort" とか?
367 名前:365 mailto:sage [2011/11/23(水) 17:35:31.29 ] >>366 確かにそのスクリプトじゃ何がしたいのか意味不明だけど、ようは、 [a.cmd] Echo 処理1開始 Rem 処理1 Echo 処理2開始 Rem 処理2 Echo 処理3開始 start "" "重い処理3cmd" Echo 処理4開始 start "" "重い処理.4cmd" pause exit /b ってのがあって、そのスクリプトに対し、 call a.cmd | tee "log.log" 的なことをしたのです。 a.cmd 内では、pause まで進むのにもかかわらず、 重い処理3cmd, 重い処理4cmd が修了するまで、 call a.cmd | tee "log.log" の次に進みません。 call a.cmd だけなら問題なく次に進むのだけど、何でそうなるのかが自分にはよくわからんのです。
368 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 18:33:00.23 ] こういうこと? ttp://scripting.cocolog-nifty.com/blog/2007/09/messagebox_5566.html
369 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 18:45:04.00 ] >ProcessStartInfo.UseShellExecute=trueでプロセスを起こすと、 >ファイルハンドルを引き継がないようです。 ってことは ショートカット作って start "" "重い処理3cmd.lnk" だな
370 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 21:55:29.35 ] rundll32.exe url.dll,FileProtocolHandler "重い処理3.cmd" でもええんじゃね
371 名前:365 mailto:sage [2011/11/23(水) 22:04:00.88 ] >>368-369 ありがとうございます!! > ttp://scripting.cocolog-nifty.com/blog/2007/09/messagebox_5566.html > どうもパイプの前のプロセスにパイプのハンドルの複製が残っているのでは? なるほど… ショートカットで、ばっちし うまく動きました。
372 名前:365 mailto:sage [2011/11/23(水) 22:12:02.17 ] >>370 なるほど! 手っ取り早くてイイですね!
373 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 20:05:50.79 ] cmd.exeのバグだな
374 名前:デフォルトの名無しさん mailto:sge [2011/11/24(木) 23:51:22.85 ] そうだな
375 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 19:02:04.82 ] hou 窓の杜 - 【REVIEW】UnixのコマンドをWindowsのコマンドプロンプトで利用可能にする「Gow」 www.forest.impress.co.jp/docs/review/20111206_496043.html
376 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 21:04:34.69 ] コマンドプロンプトで使えても、複数行の引数とかで困りそうな…
377 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 23:05:30.91 ] お願いします。 Windows7です。 host.txtが <ホスト名A>,<IPアドレス> <ホスト名B>,<IPアドレス> というようなパターンで記載されております。 キーボード入力→入力を変数に格納(%host%)。 ・変数%host%と一致する行を、host.txtの1列目から探す、見つかったら一致する行の2列目を変数ipに格納 という処理を行いたいのですが、まったく方法が思いつきません。 お知恵を拝借いたしたく。 よろしくお願いします。
378 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 23:30:42.76 ] set /p host="> " for /f "tokens=1,* delims=," %%a in (host.txt) do ( if "%%a" == "%host%" set "ip=%%b" ) echo %ip%
379 名前:377 mailto:sage [2011/12/15(木) 00:03:14.03 ] >>378 勉強になります。そのまま使わせていただきます。 ありがとうございます。
380 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 08:11:06.17 ] Windows2008使用です。 バッチ上から、システム環境変数(本来、マイコンピュータ右クリックでたどっていって編集するもの)を編集したいです。 reg add で編集(追加)はできるんですが、同じバッチ内(コマンドプロンプト内)では、反映されてません。 これを反映させられるようにしたいです。 pathを編集したいわけじゃないので、フルパスにしたからといって解決するものでもないです。 どなたかご存知の方いらっしゃいましたらご教授お願いします。
381 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 09:34:10.72 ] >set /?
382 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 09:58:29.01 ] 馬鹿登場
383 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 10:26:35.05 ] reg addしたものと同じものをsetしなおすのが手っ取り早いとは思うけどな。 start "" cmd.exe /c "%~0" %* とかやって独立したプロセス立ち上げると環境変数って新規のが使われるんだっけ? そうなったら今度はローカルで変更した環境変数まで消えちゃうんだけど。
384 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 14:42:17.97 ] setx/?
385 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 17:15:10.74 ] 'setx' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
386 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 17:59:03.37 ] setx.exeはServer 2003以降、Vista以降で有効の模様。2000/XPでは使えない。
387 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 18:26:27.91 ] 2000/XPは使わない。
388 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:08:09.34 ] すいません以前ここでcdは使うな。代わりに○○を使えって教わったのですがそのコマンドが忘れました どなたか教えてください
389 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:24:55.46 ] >>252-253 か? 別にcdでもいいよ
390 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:41:51.36 ] cd /d かもよ
391 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:58:44.93 ] pushdとか?
392 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 12:45:07.22 ] >>389-391 先生方ありがとうございます それです
393 名前:デフォルトの名無しさん [2011/12/26(月) 18:39:34.18 ] hoge_012.txt hoge_12345.txt hoge_abcd.txt みたいなファイル名のファイル群から、hoge部分を消したいんですが どう書けばいいですか? ren hoge_*.txt _*.txt ってやると _oge_012.txt _oge_12345.txt _oge_abcd.txt とリネームされました 期待する結果は _012.txt _12345.txt _abcd.txt です
394 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 22:06:51.92 ] >>393 ファイル名の先頭のhogeを除去したいなら for /f "tokens=1,* delims=_" %%a in ('dir /a-d /b ^| findstr /r "^hoge.*_.*"') do (echo "%%a_%%b" "_%%b") こんな感じかな ファイル名のどこかのhoge部分を除去したいなら、置換を利用して for /f "delims=" %%a in ('dir /a-d /b ^| find "hoge"') do (call :renhoge "%%a") goto :eof :renhoge set "name=%~1" set name=%name:hoge=% echo "%~1" "%name%" set name= goto :eof こんな感じかな リネームするときはechoをrenに置き換えてね
395 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 22:24:34.78 ] >>394 できました!ありがとう ワイルドカードで簡単に出来るものだと思ってました
396 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 16:34:39.16 ] できるよ
397 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 01:02:03.81 ] カレントフォルダにあるすべてのファイルに対して AABBBtxt→AA-BBB.txt AACCCtxt→AA-CCC.txt のように3バイト目にハイフンを入れたいです。 AAは必ず同じ文字列となります。 ren AA* AA-* としたらAA-BB.txtとなりBが1個きえてしまいました。 どのようにしたらよいでしょうか
398 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 01:08:57.22 ] まず set x=AABBBtxt をAA-BBB.txtに変えてみな それができればあとはできるだろ?
399 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 02:20:05.30 ] > 3バイト目にハイフンを入れたいです。 set a=%~1 set b=%a:~0,2%-%a:~2% echo %b%
400 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 02:22:35.04 ] > AAは必ず同じ文字列となります。 set a=%~1 set a=%a:AA=AA-% echo %a%