1 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 21:33:11 ] 拡張子が .cmd または .bat のバッチファイルの スクリプティング(プログラミング)にかかわる 質問,テクニック(JScript,Perl等の埋め込みなど含む), 関連情報のためのスレです。 【関連スレ】 バッチファイルプログラミング 3.bat pc11.2ch.net/test/read.cgi/tech/1148485555/ WSH(・∀・)スレッド! Part 2 pc11.2ch.net/test/read.cgi/tech/1176698934/ Windows PowerShell (正式版リリース)1.0 pc11.2ch.net/test/read.cgi/tech/1163818863/ HTAをもっと流行らせる計画 pc11.2ch.net/test/read.cgi/tech/1124559962/ ユーザー必読!コマンドライン(DOS Pt.6) pc11.2ch.net/test/read.cgi/win/1176558776/ MS-DOS・Win3.1総合スレッド pc11.2ch.net/test/read.cgi/win/1025462258/ ※なんでも無理矢理バッチでやろうとせずWSH等の使用も 検討しましょう。
592 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 20:37:56 ] ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/dllproc/base/dynamic-link_library_search_order.htm 最近のWindowsでは、システム・ウィンドウズディレクトリより カレントディレクトリの順位のほうが低い。 環境変数PATHより高いことに違いはないけどな。
593 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 20:38:55 ] 上のURLはローカルなms-helpだったな、すまん。 msdn2.microsoft.com/en-us/library/ms682586.aspx
594 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 20:49:39 ] おまいらスレタイ見直せ
595 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 22:23:01 ] >>1 に書いてある関連情報の範疇
596 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 08:17:15 ] powershellの話もここで扱うの?
597 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 08:20:41 ] pc11.2ch.net/test/read.cgi/win/1163764836/
598 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 10:36:38 ] win板か、じゃぁイラネ
599 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 09:56:34 ] 同一ディレクトリ内に、 同一内容のファイル(ファイル名は異なるが内容は一緒)があれば、 一方を削除して、その消したログを吐き出すっていう バッチファイルを作りたいんですが・・・。 教えてエロイ人!
600 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 10:07:01 ] まだ自分でプログラムを作れない初心者はこっちへ↓ ユーザー必読!コマンドライン(DOS Pt.6) pc11.2ch.net/test/read.cgi/win/1176558776/
601 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 11:41:01 ] 600は荒らしなので無視してかまいません
602 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 11:56:59 ] >>599 そういうのはWSHでやったほうが
603 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 12:02:15 ] >>599 ifとforとerrorlevelとfcとdelでできるかも 遅いだろうね
604 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 12:15:46 ] 総当りになるからファイル数の二乗で処理が増えるわな その前にファイルサイズでふるいにかけて… UnDupでも使っとけって話だな。
605 名前:599 mailto:sage [2007/10/23(火) 12:46:41 ] >>600-604 ありがとうございます! やっぱり総当たりになるから遅いですよね。 ファイルサイズで対象を削ってから・・・なるほど。。。 WSHについても、調べてみますー。
606 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 19:22:57 ] @echo off setlocal EnableExtensions EnableDelayedExpansion pushd %1 set FileSize=-1 set FileName="" for /f "tokens=*" %%I in ('dir "%TargetDir%" /o:sn /b /a:-d') do ( if !FileSize! EQU %%~zI ( fc /b !FileName! "%%~fI">nul if not errorlevel 1 echo del "%%~fI" ) else ( set FileSize=%%~zI set FileName="%%~fI" ) ) popd
607 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 19:27:23 ] >>606 消し忘れた 誤: ('dir "%TargetDir%" /o:sn /b /a:-d') 正: ('dir /o:sn /b /a:-d') あと、十分にデバッグしてもらった後に 誤: echo del "%%~fI" 正: del "%%~fI"
608 名前:606 mailto:sage [2007/10/23(火) 19:30:37 ] ・・・すまん 同じサイズで内容の異なるファイルが3つ以上あるとこれじゃだめだね。 めんどいので、後は任せた・・・
609 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 21:34:06 ] >>599 WSHでやるなら↓を流用するといいかも pc11.2ch.net/test/read.cgi/tech/1176698934/227-228
610 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 22:32:47 ] わざわざ作ったのか
611 名前:606 mailto:sage [2007/10/23(火) 22:38:09 ] 任せた・・・とか言いながらやっぱり自分で書いてみたりして・・・ @echo off setlocal EnableExtensions EnableDelayedExpansion pushd %1 set FileSize=-1 set FileList="" for /f "tokens=*" %%I in ('dir /o:sn /b /a:-d') do ( if !FileSize! EQU %%~zI ( call :CmpFile "%%~fI" !FileList! ) else ( set FileSize=%%~zI set FileList="%%~fI" ) ) popd endlocal goto :eof :CmpFile fc /b %1 %2>nul if not errorlevel 1 ( echo del %1 REM del %1 goto :eof ) shift /2 if not "%~2"=="" goto :CmpFile set FileList=%FileList% %1
612 名前:デフォルトの名無しさん [2007/10/23(火) 22:48:54 ] バッチのFOR文ってすごく難しいと思うんですが 自分だけでしょうか?
613 名前:デフォルトの名無しさん [2007/10/23(火) 22:50:38 ] 難しいかどうかは、人それぞれだろうが 奥が深いのは確か。
614 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 22:54:29 ] 難しいと言うより可読性がとても悪いような
615 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 23:06:15 ] スペースでインデントするとIEでは(専ブラでも)削除されるからだよ。 エディタにコピペしてみ。
616 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 23:09:55 ] for文の可読性の悪さはインデント関係ないよ
617 名前:デフォルトの名無しさん [2007/10/23(火) 23:56:08 ] java なんてこうだぜ! for (String str : a) { System.out.println(str); } コレに比べたら FOR %%I IN (*.*) DO ( ECHO %%I ) こっちがマシ。
618 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 23:59:18 ] どう見ても拡張しすぎだよな。 まったく異なる機能が一つのコマンドに無理やり詰め込まれてるって気がする。 ところで in のあとの ( ) は グループ化の ( ) より強いんだろうか?
619 名前:デフォルトの名無しさん [2007/10/24(水) 06:08:18 ] つーかさっさとマルチタブなcmd.exe作れよ。糞エス PowerShellでもガワが古いままとかドンだけてぇぬいてんだカス
620 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 07:51:29 ] そんなぐらい自分でやれよ
621 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 11:28:23 ] 乞食らしくPowerShellIDEでも使わせてもらえよ。
622 名前:599 mailto:sage [2007/10/24(水) 12:02:13 ] >>606 さん ありがとうございます! 早速、勉強しながらテストさせて頂きます! こんなことがパッと書けるなんて、すごいなぁ。 >>609 さん おお!こっちも参考になりそうですね! WSHも勉強してみたいと思います。 皆さん、色々ありがとうございましたー。
623 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 15:35:14 ] unixみたいに、コマンドをバックグラウンド実行ってできないのでしょうか?
624 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 15:38:43 ] ない cygwinのbash使うか start使うと別窓で開くが
625 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 16:15:39 ] バッチじゃなくてOSやコマンドラインの話だな
626 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 16:24:34 ] >>624 ありがとうございます。 コマンドプロンプトを非表示の状態でバッチを実行することってできますか?
627 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 16:49:25 ] ここはパソコンの使い方を教える所じゃなくて プログラムを作るスレ
628 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 17:08:00 ] CreateProcessでSW_HIDEで実行すれば非表示に出来るが一般的とは言いがたいな。 start /min で最小化して実行するのが無難だな。
629 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:46:54 ] 627は阿保だろ
630 名前:デフォルトの名無しさん [2007/10/25(木) 03:01:55 ] スタート⇒ファイル名を指定して実行 もしくはショートカットアイコンでも作ってクリックしろ
631 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:37:22 ] >>626 FAQ >>358
632 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:43:48 ] >>599 つ C:\Program Files\Support Tools\dupfinder.exe
633 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:05:33 ] >>626 つ AT
634 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:53:11 ] フォルダに入っているすべてのWMVをEXEに渡して とある変換処理をさせています↓ FOR %%F IN (*.WMV) DO C:\CONVERT.EXE "%%F" しかし、このEXEは出力先が指定できず、同じフォルダ内に結果のWMVを作ります。 それでFOR対象の中に変換後のWMVが入ってきてしまい、 必要のない変換を行ってしまいます。 こういう場合どう書けばいいんでしょうか? 変換後のファイルは頭に'[Converted]-'とつきます。 これがついてるものだけを弾きたいんですが。 私の古い知識では他のバッチを作るとか リネームして戻すととかくだらない方法しか思いつきませんorz それと最近のバッチコマンド(WinNT以降?)について よく解説されてるサイトとかってあります?
635 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 00:18:38 ] FOR %%F IN ('DIR /B *.WMV') DO C:\CONVERT.EXE "%%F"
636 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 00:21:38 ] >>626 ftp://ftp.microsoft.com/ResKit/win2000/soon.zip
637 名前:デフォルトの名無しさん [2007/10/26(金) 00:25:34 ] >>634 >それと最近のバッチコマンド(WinNT以降?)について >よく解説されてるサイトとかってあります? pc11.2ch.net/test/read.cgi/tech/1178281991/6
638 名前:デフォルトの名無しさん [2007/10/26(金) 01:26:13 ] FOR %%F IN (*.CS) DO CALL :convert "%%F" GOTO :EOF :convert SET T=%~1 SET T=%T:~0,12% IF NOT "%T%" == "[Converted]-" C:\CONVERT.EXE "%~1" EXIT /B
639 名前:デフォルトの名無しさん [2007/10/26(金) 01:29:56 ] いかん、まちごた。WMV やった・・・ FOR %%F IN (*.WMV) DO CALL :convert "%%F" GOTO :EOF :convert SET T=%~1 SET T=%T:~0,12% IF NOT "%T%" == "[Converted]-" C:\CONVERT.EXE "%~1" EXIT /B 要するに、頭12文字が [Converted]- で無いヤツを処理するサブルーチン つくればよかたい。
640 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 03:47:01 ] >>634 同じフォルダ内というのが、CONVERT.EXEのあるフォルダじゃなくて カレントディレクトリっていうことなら、話は簡単だが?
641 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 03:57:46 ] >>635 より簡単?
642 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 22:02:02 ] for /f %%s in ('コマンド') do if errorlevel 1 echo %%s 'コマンド'のerrorlevelによって、'コマンド'の出力の処理を変えられますか?
643 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 22:37:44 ] >642 そういう初歩的な話はこちらへどうぞ↓ ユーザー必読!コマンドライン(DOS Pt.6) pc11.2ch.net/test/read.cgi/win/1176558776/
644 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 22:39:14 ] 初歩的じゃないんだけど
645 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 22:44:13 ] 643はねんねの時間ですよー(^o^)
646 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 22:57:59 ] 初歩的だとしてもこのスレで問題ありません。 誘導厨の荒らしは頭のおかしい人なので無視しましょう。
647 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:09:22 ] つまり初歩的なんだ
648 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:14:01 ] 要するに初歩的な話
649 名前:デフォルトの名無しさん [2007/10/28(日) 00:37:23 ] 「誘導厨」 か。いい言葉だな。こんど使わせてもらおうっと。 ここ以外にもスレをいくつか定期的に読んでるけど、 すぐ「検索しろ」「ググれ」って言うバカが多いのなんの。 検索しろで済むなら、このスレいらんやろ? こういうヤツらを・・・んと、えっと、何と表現していいんだ? そう、まさしく「誘導厨」。
650 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:50:00 ] このスレの誘導厨はリアル人格障害のようですよ
651 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:57:13 ] >>649 検索やググっても分からない奴に何を(ryw
652 名前:デフォルトの名無しさん [2007/10/28(日) 01:01:31 ] >>650 あ、ほんとだ。
653 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:57:02 ] 自分の気に入らない奴には「〜厨」と付けて 勝った気になるというか自分の方が正しい気になるやつって居るよね 例えば、タバコ嫌いな奴は喫煙家を喫煙厨とか吐煙厨とか言って蔑み 喫煙家はタバコ嫌いな奴を嫌煙厨などと言って罵る というわけで「〜厨」と呼ばれてる奴が、一方的におかしかったり 間違ってたりするわけではないというお話でした 「〜厨」と呼ばれる奴が悪いなら、「嫌誘導厨」と言われでも言い返す術は無くなるしw もちろん誘導を嫌ってる奴の方が悪いって訳でもないけど、過剰に反応しすぎて 正しい誘導まで目に入ってない傾向はある もっとも誘導する方もここの主旨の範疇まで誘導してる場合もあるからお互い様
654 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 02:01:45 ] 一方的におかしいから誘導厨と言われるんだろ
655 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 02:37:15 ] テキストファイルの先頭行を削除するにはどうすっぺ?
656 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 03:20:18 ] >>655 @echo off echo 1d > hoge.tmp echo e > hoge.tmp edlin hage.txt < hoge.tmp del hoge.tmp
657 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 03:31:42 ] @echo off for /f "skip=1 tokens=1* delims=:" %%x in ('findstr /r /n "^" "FILENAME.TXT"') do echo.%%y
658 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 04:05:36 ] >>656 @goto a 1d e :a @edlin hage.txt < "%~f0"
659 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 09:02:21 ] unixのtailみたいなスマートな方法ないの? もしかしてあんまり簡単にやってしまうとスレ違いになるから、無理に頭の悪い方法でやってる?
660 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 11:25:34 ] スマートにやりたい人はCygwinやGnuWin32を入れる方向で
661 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 14:40:01 ] for /f "skip=1 tokens=1* delims=:" %%x in ('findstr /r /n "^" "FILENAME.TXT"') do echo.%%y >"FILENAME.TXT" 空 for /f "skip=1 tokens=1* delims=:" %%x in ('findstr /r /n "^" "FILENAME.TXT"') do echo.%%y >>"FILENAME.TXT" 倍
662 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 14:43:06 ] >>661 当たり前だろ
663 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:51:39 ] ^Z
664 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:45:46 ] >>658 ( echo 1d echo e )|edlin hage.txt だけど、^Zが付くんじゃなあ debugで削除するとか
665 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 22:09:58 ] バッチファイルを実行したときの標準出力への出力を全部 ログに残したいんですが、いい方法はないでしょうか? 「これを最初に書いておけば以降の出力は全部ログに残る」 みたいのがあれば一番いいんですが。
666 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 22:11:27 ] call :main > "%~0.log" exit /b :main echo hello
667 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 09:12:17 ] >>666 ありがとうございます。
668 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 09:46:07 ] フォルダをドロップしたら中にあるファイルごとフォルダを削除してくれる batファイルはありますでしょうか。
669 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 09:59:27 ] がんばって作るんだ。
670 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 10:04:36 ] デバッグどころか一度も実行していないが if "%~1"=="" goto err cd /d "%~1" || cd /d "%~dp1" || goto err dir /w echo. echo "%cd%"のフォルダとファイルを削除します pause set folder=%cd% del *.* || goto err cd .. || goto err rmdir "%folder%" || goto err goto exit :err echo error pause :exit
671 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 10:13:22 ] エクスプローラでドロップするんならエクスプローラで削除すれば簡単なのに
672 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 10:17:12 ] >>669-670 ありがとうどざいました。 >671DOSで削除した方がHDDにやさしいような気がしたもので。
673 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 10:22:19 ] ( ゚д゚)ポカーン
674 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 10:33:18 ] そしてうっかり間違ったフォルダを消して涙目の>>668
675 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 14:53:42 ] 大量に消すときはrd /s/qだな
676 名前:デフォルトの名無しさん [2007/10/29(月) 16:21:35 ] ご助言お願いします。 test.txtという3行のファイルがあり、 その中身は以下のようになっています。 あかさたな 123456 ABCDEFG 1行の内容を1つの変数に格納したいのですが、 どのようにすればよいでしょうか。 FOR文を色々書いてみましたが、どうしても1行目しか 変数に入れられませんでした。
677 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 16:27:06 ] 初心者向きのスレはこっち↓ ユーザー必読!コマンドライン(DOS Pt.6) pc11.2ch.net/test/read.cgi/win/1176558776/
678 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 18:33:23 ] ( set /p a= set /p b= set /p c= )<test.txt set d=%a% %b% %c%
679 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 18:40:48 ] >>676 @echo off for /f "tokens=1* delims=:" %%I in ('findstr /n /r "^" test.txt') do set AAA[%%I]=%%J set AAA[ >>677 前スレであぼーんされたの忘れたの? アク禁されないように気をつけろよ。
680 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 19:13:28 ] やっぱスレ違いの質問に答えるやつはレベル低いな
681 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 19:30:29 ] 初心者でもこのスレでOKですよ。 スレ違いの質問に見えているとしたら頭が悪いのです。
682 名前:デフォルトの名無しさん [2007/10/29(月) 19:31:08 ] ヤター!チャンス! さっそく使わせてもらいます。 >>680 誘導厨は帰れ!自分の巣へ帰れ!37度線よりこっちに来るな!
683 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 19:31:27 ] >>681 いい加減ウザいんだが。自演じゃないなら自粛してくれ。
684 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 19:36:06 ] >>682 誘導厨はリアル人格障害のようだからレスするだけ無駄っぽいですよ。
685 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 19:41:26 ] >>682 全然関係ないけど、37じゃなくて38だろと。
686 名前:デフォルトの名無しさん [2007/10/31(水) 20:21:53 ] マシンAのバッチファイルから、マシンBにあるバッチファイルを実行する方法はないでしょうか。 1,マシンAのバッチファイルで、マシンBに対して何らかの通信を行うプログラムを実行 2,マシンBはAからの通信を受けてバッチ実行 というような感じになるのかなと思うのですが、こういう事は可能でしょうか。
687 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 20:22:41 ] つ[rsh]
688 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 20:31:01 ] つWshRemote
689 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 20:54:18 ] パソコンの使い方
690 名前:686 mailto:sage [2007/10/31(水) 20:57:14 ] 大事なことを書き忘れていました。 マシンA、BともにWiindows2000です。 >687 せっかく教えていただいたのに済みません。 Windows2000なのです。 >688 なるほど、WSHですか。 使ったことなかったですが、今回の目的程度であれば ググッたサイトで見つけたサンプルを改変すればできそうな気がしてきました。 あした試してみます。ありがとうございます。
691 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 21:02:44 ] >>689 パソコンの使い方は pc11.2ch.net/pcqa/ で訊いてくださいね
692 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 22:03:55 ] つWMI Win32_Process.Create