1 名前:デフォルトの名無しさん [2009/05/14(木) 11:29:31 ] 前スレ 【.cmd】 バッチファイルスクリプト %4 【.bat】 pc12.2ch.net/test/read.cgi/tech/1229955189/
458 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 13:13:56 ] 代替コマンドシェルにnyacusなんてのがあるんだな。 cmdと比べると構文が結構まともだ。 PowerShellより圧倒的に軽いしちょっと覚えてみる気になった。
459 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 03:55:32 ] nyacus落ちない?数年前に使ったけど、それでやめた。
460 名前:デフォルトの名無しさん mailto:sage [2009/12/10(木) 01:06:30 ] 今のところ落ちてないよ。まだ大した使い方してないけど。 最終更新日が先月でまだまだメンテが続いてるね。
461 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 15:53:24 ] CMD.exeのfor文は頑張りすぎ
462 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 18:23:45 ] runasの/trustlevelってどういうときに使うの?
463 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 21:14:34 ] for /F %%a in (filelist.txt) do move "%%a" %dir% filelist.txtにファイルの一覧をリストアップしてそのファイルをすべて特定のフォルダへ移動したいです ですがファイル名に半角スペースが含まれていると移動されずにスルーされてしまいます 困ってしまいます お願いします
464 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 21:15:18 ] >>439 >>440 これの改良版で1週間分のみバックアップを残す仕様に出来る方おりませんか? ファイルが7個以上あった場合、古いものから消していくようになると思うんですが
465 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 21:25:48 ] >>463 "delims="
466 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 21:32:10 ] >>464 for /f "skip=6 delims=" %%i in ('dir /b/o-d data*.dat') do del %%i これで新しいものから順に6個を除いたファイルは全部消える
467 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 21:33:20 ] >>465 ありがとうございました 助かりました
468 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 11:52:30 ] カレントディレクトリを取得するのに for %i in (.) do set cdir=%~dpnxi とかやってるんですが、もっとスマートな方法はないですしょうか?
469 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 12:04:19 ] %CD%とかじゃ駄目だっけ?
470 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 15:46:31 ] フルパスをゲットするなら%cd%でいい c:\a\b\c\d\thisdir のthisdirをゲットするなら %cd:\=&set cdir=% echo %cdir% とか。
471 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 19:32:42 ] set cdir=.
472 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 03:10:06 ] set cdir=. echo %cdir% . ダメじゃんw
473 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 19:05:35 ] set cdir=%cd% echo %cdir%
474 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 11:07:38 ] %CD%なんてあったんですね。ありがとうございます。 カレントディレクトリがセットされた環境変数は ありそうだと思って set<enter>して探したのですが、これにはでないみたいです。 「特殊な環境変数」でググると%CD%以外にもいろいろ知ることができました。
475 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 14:11:28 ] set/?
476 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 14:14:37 ] カレントディレクトリはドライブごとにある echo %=c:% echo %=d:%
477 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 14:16:28 ] >>476 知らなかった・・・
478 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 14:37:09 ] set, で=*環境変数も表示
479 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 14:40:28 ] 2009年も終わろうとしてるのに今更cmdのtipsなんて何の意味がある。 PowerShellに乗り換えようぜ。
480 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 15:50:56 ] =::=::\ は何?
481 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 22:25:59 ] >>479 PowerShellがNTに載ったらね
482 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 14:51:01 ] おまえらスレチガイ pc12.2ch.net/test/read.cgi/win/1221046998/
483 名前:デフォルトの名無しさん [2009/12/21(月) 15:23:45 ] ipアドレスの3ブロック目で判断して、 レジストリを修正するバッチファイルが作りたいのです。 ipconfigしても情報が多すぎるし、 ドット2つの後ってどうしたらいいんでしょう…。 どなたかご教授願います。
484 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 15:26:03 ] for /f "delims=. tokens=3" %I in ("1.2.3.4") do echo %I
485 名前:sage [2009/12/21(月) 16:36:18 ] >>484 素晴らしすぎます!!! というか私の知識不足…頑張り不足…でしょうか。 ありがとうございました!
486 名前:483 mailto:sage [2009/12/21(月) 19:26:24 ] お陰様でここまできました。 for /f "tokens=14 delims=: " %%I in ('ipconfig ^| find "IP Address"') do set IP=%%I for /f "tokens=3 delims=." %%I in ("%IP%") do echo %%I echo %IP% ただ、スマートじゃないというかなんというか…。 こんなもんでしょうかね。
487 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 22:05:22 ] tokens=14 ってなんじゃそら。 skip=n でn行飛ばせるって知ってるよな?
488 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 22:55:04 ] 出たか、知ったかぶり。お手並み拝見
489 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 13:14:33 ] 横からだけど俺的にはアリだな。 tokens=14 を数える事は二度と無いとしても、将来コピペで使い回した時、 このスレでのやりとりを良い思い出として生暖かく思い出せるw "tokens=2 delims=:" だったら何も心に響かない。
490 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 17:32:15 ] OSにもれなくついてくるおまけの機能に多くを求めてはいけない。 メモ帳やペイントに不満を感じるなら勝手に別のアプリをお使いくださいというのがMSの基本姿勢。 不便だろうが欠陥があろうが知ったことではない。
491 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 17:47:03 ] delimsを.だけにすれば1行で書けるだろ? for /f "tokens=?? delims=." %%I in ('ipconfig ^| find "IP Address"') do echo %%I ??は自分で数えろ
492 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 18:26:46 ] skipがどうしたって?
493 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 18:45:11 ] どんぐりの背比べ
494 名前:483 mailto:sage [2009/12/22(火) 18:47:08 ] >>491 ありがとうございました。 for /f "tokens=15 delims=." %%I in ('ipconfig ^| find "IP Address"') do echo %%I でバッチリ取得出来ました。 これが一番スマートですね。助かりました!
495 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 18:53:36 ] バッチごときでスマートって しまむらで洋服買って自慢してるようなもんか
496 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 20:09:54 ] すっぱい葡萄
497 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 20:45:16 ] たぶん for /f "tokens=15 delims=." %%I in ('ipconfig') do echo %%I でもいける
498 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 20:53:10 ] どんぐりの背比べ
499 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 21:55:38 ] すっぱい葡萄
500 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 14:33:10 ] skipがどうしたって?
501 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 12:04:04 ] フォルダを五十音で分配したいのですが、バッチファイルでできるんでしょうか? 1)具体的にはデジカメで写真を撮影した事を想定してください。 D:\デジカメ写真データ\001.jpg D:\デジカメ写真データ\002.jpg ・ ・ D:\デジカメ写真データ\009.jpg D:\デジカメ写真データ\010.jpg 2)それを撮影場所ごとに整理します。(ここまでは人間の手でやります。) D:\デジカメ写真データ\きんかくじ(金閣寺)\001.jpg D:\デジカメ写真データ\きんかくじ(金閣寺)\002.jpg D:\デジカメ写真データ\きよみずでら(清水寺)\003.jpg D:\デジカメ写真データ\きよみずでら(清水寺)\004.jpg D:\デジカメ写真データ\きよみずでら(清水寺)\005.jpg D:\デジカメ写真データ\とうだいじ(東大寺)\006.jpg D:\デジカメ写真データ\ほうりゅじ(法隆寺)\007.jpg D:\デジカメ写真データ\ほうりゅじ(法隆寺)\008.jpg D:\デジカメ写真データ\ほうりゅじ(法隆寺)\009.jpg D:\デジカメ写真データ\ほうりゅじ(法隆寺)\010.jpg 3)ここでバッチファイルをくりっくすると D:\読み順フォルダ\か行\きんかくじ(金閣寺)\001.jpg D:\読み順フォルダ\か行\きんかくじ(金閣寺)\002.jpg D:\読み順フォルダ\か行\きよみずでら(清水寺)\003.jpg D:\読み順フォルダ\か行\きよみずでら(清水寺)\004.jpg D:\読み順フォルダ\か行\きよみずでら(清水寺)\005.jpg D:\読み順フォルダ\た行\とうだいじ(東大寺)\006.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\007.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\008.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\009.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\010.jpg とやりたいです。
502 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 12:08:36 ] D:\読み順フォルダ\か行\きんかくじ(金閣寺)\002.jpg D:\読み順フォルダ\か行\きよみずでら(清水寺)\003.jpg D:\読み順フォルダ\か行\きよみずでら(清水寺)\004.jpg D:\読み順フォルダ\か行\きよみずでら(清水寺)\005.jpg D:\読み順フォルダ\た行\とうだいじ(東大寺)\006.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\007.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\008.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\009.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\010.jpg D:\読み順フォルダ\か行\きんかくじ(金閣寺)\002.jpg D:\読み順フォルダ\か行\きよみずでら(清水寺)\003.jpg D:\読み順フォルダ\か行\きよみずでら(清水寺)\004.jpg D:\読み順フォルダ\か行\きよみずでら(清水寺)\005.jpg D:\読み順フォルダ\た行\とうだいじ(東大寺)\006.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\007.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\008.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\009.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\010.jpg D:\読み順フォルダ\か行\きんかくじ(金閣寺)\002.jpg D:\読み順フォルダ\か行\きよみずでら(清水寺)\003.jpg D:\読み順フォルダ\か行\きよみずでら(清水寺)\004.jpg D:\読み順フォルダ\か行\きよみずでら(清水寺)\005.jpg D:\読み順フォルダ\た行\とうだいじ(東大寺)\006.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\007.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\008.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\009.jpg D:\読み順フォルダ\は行\ほうりゅじ(法隆寺)\010.jpg
503 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 12:12:03 ] そこまで人の手でやれよ。
504 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 12:17:13 ] 写真を分類するソフトなら腐るほどある。
505 名前:デフォルトの名無しさん [2009/12/26(土) 12:57:24 ] ゴミの山(Dドライブ)を見てたらすんごいもの見つけたww codepad.org/xzEwdV3R なんかかなり昔作ったVB風の記述でバッチファイルを吐く言語の ソースファイルっぽいw 今コンパイラ探してる
506 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 13:04:17 ] #EXPAND BatchBasic Sub Main() Print("Hello World.") End Sub Sub Print(str) #NATIVE ECHO %str% End Sub
507 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 13:06:23 ] >>501 できるけど、その程度の代物だったら手作業と大して変わらん手間だろ。
508 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 14:48:26 ] >>505 batに生産性を求めてどうする
509 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 20:27:40 ] >>508 生産性がよくなるんだろ?
510 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 22:38:09 ] 管理者として実行されてるか?を判定するには?
511 名前:デフォルトの名無しさん [2009/12/27(日) 10:14:31 ] 管理者権限でしかアクセスできないフォルダにアクセスしてERRORLEVELで調べる
512 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 12:08:47 ] 環境変数比較してみたら管理者権限の場合SESSIONNAMEが定義されてなかったので それで判別できる? (Vista x64で確認)
513 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 12:27:56 ] runas /trustlevel:制限しない rundll32 >nul echo %errorlevel% ちゃんと動くかは分からない
514 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 14:35:24 ] echo>file dir/q file
515 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 15:01:58 ] mklink a a echo %errorlevel%
516 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 16:00:42 ] net user %username% |findstr "*administrators" MS謹製のwhoamiに権限表示があった気がする
517 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 17:58:10 ] >>516 UACの昇格
518 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 22:26:55 ] >>512 Vista 32bit x86でも確認したよー
519 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 18:56:58 ] rundll32 shell32,IsUserAnAdmin
520 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 17:02:50 ] バッチファイルの引数をプラス記号で繋ぐにはどうしたら良いでしょう。例えば、 start "" iexplore "www.google.com/search?lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%* " ここの %* を、引数の数に合わせて %1+%2+.... とやる方法です。
521 名前:デフォルトの名無しさん [2010/01/04(月) 20:39:55 ] codepad.org/w6ugNsAm エスケープには対応してないから使えるのは英字だけなのでよろしく
522 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 20:42:43 ] もっとうまい方法がある気がしてならないのでちょっと晒してみる。 ----------ここから set Param=%1 :loop if not "%2"=="" set Param=%Param%+%2 shift if not "%2"=="" goto loop start "" iexplore "www.google.com/search?lr=lang_ja&ie=sjis&oe=UTF-8&q=%Param% " ----------ここまで 細かい事考えなければこんな感じ? 引数を繋ぐスマートな方法を知りたいです。。。
523 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 20:44:47 ] つか誰かHttpEscapeってサブルーチンでも作って
524 名前:522 mailto:sage [2010/01/04(月) 20:48:01 ] >>521 そっか、先に shift させた方がずっと美しいや。 参考になりましたです。
525 名前:521 [2010/01/04(月) 21:06:29 ] いや、スマートにするのは簡単だけど、 codepad.org/GKyUSzKv なんかつまんないなあ。^^;
526 名前:522 mailto:sage [2010/01/04(月) 21:15:25 ] >>525 これこれ、こーゆーの求めてました! ありがとうございました >>521 、きっかけをくれた >>520 にも感謝。
527 名前:520 mailto:sage [2010/01/05(火) 00:22:01 ] >>521 , 522 お二人ともありがとうございました。 特に >>525 が素晴しく、大変勉強になりました!!
528 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 01:05:21 ] そもそもぐぐるなら置換不要
529 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 18:02:19 ] そうなの?
530 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 19:19:39 ] 質問なんですが、 例としてimg001、img002、img003というファイルがあったとして imgに当てはまるものを一気に削除するというスクリプトはあるでしょうか?
531 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 19:36:16 ] delete img*
532 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 19:47:41 ] >>531 erase img*
533 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 20:56:26 ] >>531-532 「imgに当てはまるもの」→ del img
534 名前:530 mailto:sage [2010/01/11(月) 01:04:30 ] >>531-533 ありがとうございます。 delの場合は del img*でいけました。
535 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 01:16:52 ] >>531-533 おまえら質問に答えてない >>530 だれかが作ればある
536 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:58:08 ] 修飾子 %~$PATH: の使い方について質問があります。 引数のファイルを %PATH% から検索し、エクスプローラーで開く バッチファイルを書いてみました。 ---- open.bat ---- set x=%~$PATH:1 if %x% == "" goto eof start "" explorer.exe /select,%x% ---- 使用法: open.bat explorer.exe / open.bat cmd.exe / open.bat msconfig.exe ここで、拡張子を .exe に決め打ちし、下記が動作するようにするには どうすれば良いでしょうか。 open.bat explorer / open.bat cmd / open.bat msconfig
537 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:31:51 ] 下記のようにしてとりあえず希望の動作が出来るようになりました。 もう少し一般的な方法があれば教えて下さい。 ---- open_mod.bat ---- set x=%~$PATH:1 if not "%x%" == "" goto open for %%i in (%1.exe) do ( set x=%%~$PATH:i ) if not exist "%x%" exit :open start "" explorer.exe /select,%x% ----
538 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:54:18 ] for %%i in (%1.exe) do for %%j in (%~$PATH:1 %%~$PATH:i) do start "" explorer.exe /select,%%j
539 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:41:21 ] for /f %%i in ('where %1') do start "" explorer.exe /select,%%i
540 名前:536 mailto:sage [2010/01/13(水) 00:43:51 ] >>538 , 539 どちらもすごいです!! たいへん勉強になりました。
541 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 10:54:58 ] >>539 これのうち、 'where %1' の部分が良く理解できません。 解説のあるウェブサイトを紹介してもらえないでしょうか。
542 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 13:14:07 ] www.atmarkit.co.jp/fwin2k/win2ktips/1151where/where.html
543 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:29:11 ] >>542 やっと理解しました。where は OS のコマンドで、 また for /f in %%変数 (...) の括弧内ではコマンドが使えるのですね。 情報ありがとうございました。
544 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:23:03 ] %1 %2 ... は%* %2 ... をまとめて取り出せないかな バラして組み立てるしかないかな
545 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:26:37 ] shiftすりゃいいんじゃねーの
546 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 02:34:52 ] shift echo %*
547 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:02:48 ] これだと %1 も出てくるな…
548 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 09:28:36 ] shift /2
549 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 13:11:40 ] for /f "tokens=1*"でとれるんじゃねーの
550 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 13:48:41 ] shiftじゃできないんじゃねーの
551 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 19:42:14 ] for /f "tokens=1*"じゃできないんじゃねーの
552 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 20:31:47 ] for /f "tokens=1*" %%i in (%*) do echo %j
553 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:44:02 ] for /f "tokens=1*" %%i in ("%*") do echo %j だろ
554 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 11:29:18 ] この言語はforの使い方がおかしい
555 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 15:33:31 ] ワイルドカードを展開するコマンドにforという名前をつけてしまったのがそもそもの間違い。
556 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 16:13:29 ] for /f "tokens=1*" %i in ("1 2 3 4") do echo %j 2 3 4 ほれ
557 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:16:36 ] for /f "tokens=1*" %i in (""1 2" "3 4"") do echo %j 2" "3 4" ほれ
558 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 15:10:32 ] set a=%* echo !a:%1=!