1 名前:デフォルトの名無しさん [2006/05/25(木) 00:45:55 ] 前スレ バッチファイルプログラミング 2.bat pc8.2ch.net/test/read.cgi/tech/1104911889/ 関連スレ 初心者〜管理者まで必読!コマンドライン(DOS Pt.4) pc8.2ch.net/test/read.cgi/win/1116131036/ MS-DOS・Win3.1総合スレッド pc8.2ch.net/test/read.cgi/win/1025462258/ WSH(・∀・)スレッド! pc8.2ch.net/test/read.cgi/tech/1055075469/ バッチファイルプログラミングとは・・・・ ・ファイル拡張子が ".bat" ・複数のコマンドを使い、実行させるバッチファイルを作る を満たせばOK!
267 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 19:41:55 ] どうせ >>181 あたりが図星だろ。 器のちっちぇえ野郎。
268 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 19:48:55 ] >>264 バッチプログラミングなのにCScriptで作ってバッチから呼んでるだけって ほとんど詐欺だと思わないか? 例えばVCで頼んだプログラムの中味がVBだったらどう思う?
269 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 19:50:53 ] 動けばよいよい。
270 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 19:56:17 ] @REM 荒しの観察が面白いです。
271 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 19:58:45 ] CScriptで直接やればいいのにそうしないのは、 CScriptで直接やってしまうと明らかにスレ違いになるからだろ どう見ても荒らしだな
272 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 20:18:57 ] >>268 しかしVBで頼んだプログラムの中身がVCでも気にしない
273 名前:デフォルトの名無しさん [2007/01/21(日) 23:27:21 ] 質問させてください。 テキストファイルにある特定の語句をSETコマンドで 変数の値として代入するには、どのような書式を記述すれば 良いでしょうか?
274 名前:あぼーん mailto:あぼーん [あぼーん] あぼーん
275 名前:デフォルトの名無しさん [2007/01/21(日) 23:36:08 ] >>273 特定のファイルはテキストファイルの中にどのように入ってますか? ※頭のおかしいひとは無視しましょう。
276 名前:デフォルトの名無しさん [2007/01/21(日) 23:42:28 ] ある特定の語句をテキストファイルに代入するのです
277 名前:273 [2007/01/21(日) 23:49:45 ] >>275 ディスク容量のチェックバッチを作りたいと思ってます。 そこで、chkdskの内容をリダイレクトして、 そのテキストファイルの「全ディスク領域」や「使用可能領域」で表示される 値を変数に入れて、今の使用率を表示させたいと思います。 こういった場合、どうやってSetコマンドを使用すれば良いでしょうか。
278 名前:デフォルトの名無しさん [2007/01/21(日) 23:50:50 ] 「テキストファイルにある,特定の語句」でなくて 「テキストファイルに,ある特定の語句を」でしたか。 echo %A% > file.txt とやれば,環境変数Aの内容が file.txt に書き出されるけれども
279 名前:273 [2007/01/21(日) 23:55:06 ] >>278 ありがとうございます。 ご助言頂きたいのは上の方です。 「テキストファイルにある,特定の語句」でなくて ファイル システムに問題が見つかりました。 CHKDSK を /F オプションを使って実行して、問題を修正してください。 (前略) 80405293 KB : 全ディスク領域 80017288 KB : 87864 個のファイル 29896 KB : 8242 個のインデックス 0 KB : 不良セクタ 174373 KB : システムで使用中 65536 KB : ログ ファイルが使用 183736 KB : 使用可能領域 (攻略) 上のようなテキストがあった場合、 全ディスク領域の「80405293」と 使用可能領域の「174373」の値を変数にSETするにはどうすれば良いでしょうか
280 名前:デフォルトの名無しさん [2007/01/22(月) 00:22:59 ] >>279 こんな感じでしょうか。2行目等は適当に変えてください。 chkdsk.txtという一時ファイルを作ってます。 @echo off chkdsk /i /c d: > chkdsk.txt for /f "usebackq tokens=1,2,4" %%i in (`find "領域" chkdsk.txt`) do if /%%j==/KB set %%k=%%i echo 全ディスク領域: %全ディスク領域% echo 使用可能領域 : %使用可能領域%
281 名前:273 [2007/01/22(月) 05:33:37 ] >>280 ご丁寧にありがとうございます! 頂いた回答で作れそうです。 助かりました。多謝!!
282 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 09:49:44 ] rar zip lzhがいっぱいあって中を調べたいんだけど 解凍すると時間かかるからdirの結果みたいなのがほしい。 バッチでできる?
283 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 09:58:19 ] そういうコンソールツールを使えば出来るけど本来の機能だけでは無理 コンソールツールの使い方とかはスレ違いなので此処では聞かないように
284 名前:デフォルトの名無しさん [2007/01/22(月) 10:42:51 ] rar, zip, lzhすべてに対応してるコマンドラインツールがあれば バッチ作るまでもなく簡単ですけどね。 そういうのがなければ、拡張子で判断して処理を分けるバッチ を作れば良さそう。
285 名前:あぼーん mailto:あぼーん [あぼーん] あぼーん
286 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 14:21:25 ] >>273 > ディスク容量のチェックバッチを作りたいと思ってます。 > そこで、chkdskの内容をリダイレクトして、 > そのテキストファイルの「全ディスク領域」や「使用可能領域」で表示される そのためにchkdsk使うのは重たくないかい? WSH利用したほうが。。。
287 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 15:53:50 ] 嵐は他にやることがないらしい。
288 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 15:56:43 ] >>287 は>>286 宛ではないので誤解なく
289 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:00:04 ] こうするとコマンドエコーなし.CMD @MORE +1 "%~f0" >"%~f0:.VBS" & CScript.exe //NoLogo "%~f0:.VBS" %* & GOTO :EOF WScript.Echo "俺はCScript専用だぜゴルァ"
290 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:34:43 ] >>289 moreを使う手があったか。 一々vbsファイルを生成するのはアレだけど面白い
291 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:56:08 ] スレ違い
292 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:59:15 ] バッチだから全然問題ない
293 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:20:00 ] 他に適切な板やスレがあると「板やスレ主旨と違う投稿」になる
294 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:23:40 ] 板やスレの趣旨には合ってます。
295 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:35:46 ] 多少関係があっても他にふさわしい板やスレがある
296 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:13:41 ] 荒らしは、働いてないんだなw 嵐のプロフィールに、童貞短小包茎と無職も加えておこう・・・
297 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 23:16:50 ] こういう病気なら働けないだろうな
298 名前:デフォルトの名無しさん [2007/01/25(木) 22:01:57 ] バッチファイル初心者です。 dirコマンドで引っ張り出した、ファイル名リスト(flist.txt)があります。 これを一行ずつ参照して内容を表示する、という作業を行うためのバッチファイルを作成しています。 for /f %%i in (flist.txt) do type %%i ところが、ファイル名リストに記述されているファイル名やパスに半角空白が含まれているため、エラーになってしまいます。 どうすればいいのですか?
299 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 22:19:48 ] "delims="
300 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 23:08:01 ] そんな超初心者はWindows板へ 初心者〜管理者まで必読!コマンドライン(DOS Pt.5) pc10.2ch.net/test/read.cgi/win/1152544955/ バッチならなんでもOK DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、 wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ コマンドラインインタフェースに関するネタならなんでもOK。
301 名前:デフォルトの名無しさん [2007/01/25(木) 23:19:51 ] >>298 for /f %%i in (flist.txt) do type "%%i" では?
302 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 23:23:18 ] 頭のおかしい人まだいたのか
303 名前:デフォルトの名無しさん [2007/01/26(金) 07:01:24 ] >>300 なんで?
304 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 08:37:27 ] >>303 >>300 は病気だから
305 名前:デフォルトの名無しさん [2007/01/26(金) 10:47:05 ] >>304 なんで?
306 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 10:13:01 ] 質問します。 各言語のマニュアルを参照するバッチを書いていたのですが 第二引数を入れた場合と入れなかった場合で 変数の展開に差が出てしまいます。 setコマンドではちゃんと反映されているのですが…? > type man.bat @echo off setlocal set lang=%1 set page=%2 if "%lang%" == "perl" ( if "%page%" == "" set page=perl set page echo %podpath%\%page%.pod more %podpath%\%page%.pod ) endlocal > man perl perl page=perl C:\Perl\〜\perl.pod 【ファイルの内容】 > man perl page=perl C:\Perl\〜\.pod ファイル C:\Perl\〜\.pod にアクセスできません
307 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 10:35:54 ] >>306 setlocal → setlocal EnableDelayedExpansion echo %podpath%\%page%.pod → echo %podpath%\!page!.pod more %podpath%\%page%.pod → more %podpath%\!page!.pod 詳細は set /? で「遅延環境変数の展開」を参照のこと。
308 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 13:45:42 ] こんな過疎スレより本スレへ行った方が幸せになれるでしょう 初心者〜管理者まで必読!コマンドライン(DOS Pt.5) pc10.2ch.net/test/read.cgi/win/1152544955/ バッチならなんでもOK DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、 wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ コマンドラインインタフェースに関するネタならなんでもOK。
309 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 13:55:39 ] 日付で見たらそっちの方が過疎スレだし、 レベルの低いWin板なんか行きたくない。
310 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 14:23:23 ] ここは5月に立って300ちょっと windows板の方は7月に立って700以上 どう考えても向こうの方が多いだろ それにここなんか>309みたいなスレに関係ない書き込みがほとんどだ
311 名前:306 mailto:sage [2007/01/28(日) 14:32:23 ] >>307 ありがとうございます。 ifの中の展開はifの時点で全て展開されてしまうのですね。 >>308 今度コマンドプロンプトの操作についての質問があればそちらを使いますね。 ただ、今回はバッチスクリプトの話題なのでこちらを選びました。 >>309 あそこはあそこでレベル高い方もいらっしゃるので そう1括りにするのは如何かと思います。
312 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 15:06:45 ] >>311 というか、誘導厨はこのスレの荒らしだから 必要なくても、書き込みがあるごとに荒らしにきてる わけよ。 別に向こうでなくても、こっちでもどっちでもいいんだけどさ。 誘導厨は、手の付けられない半病的な奴だから、 あまり庇わなくていいよ。
313 名前:311 mailto:sage [2007/01/28(日) 16:55:59 ] 別に私は誘導厨を庇ってはいませんよ。 庇ったとすればWin板で厨に囲まれながら 普通の活動をしてる人達を、ですね。
314 名前:デフォルトの名無しさん [2007/01/28(日) 21:05:48 ] フォルダの中にある特定の拡張子のファイルをこちらから用意したa.exeに通したいんですが フォルダの中にフォルダがあったりする状況です。 よろしければ教えてください。
315 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 21:30:53 ] >>314 @echo off setlocal enableextensions for /F "usebackq delims=" %%n in (`dir /S /B /A-D *.txt`) do a.exe "%%n"
316 名前:あぼーん mailto:あぼーん [あぼーん] あぼーん
317 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 21:57:50 ] >>315 いいね、これ。 314じゃないけど、使わせてもらうよ。
318 名前:デフォルトの名無しさん [2007/01/28(日) 22:15:36 ] 病人に対して不謹慎だけど笑えてくる
319 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 00:16:50 ] >>315 何でそんな面倒なことを... for /r . %f in (*.txt) do a.exe "%f" じゃだめんなんか?
320 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 06:06:42 ] 括弧内の変数展開が先に一括でされるのは面白い仕様ですね。 変数やカレントディレクトリをローカルからグローバルに渡すのは 今まで出来ないと思ってたんですが (endlocal set %globalvar%=%localvar%) としたら出来ました
321 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 02:16:22 ] 誘導厨的にDEBUGコマンドは何に入るんだろ あれ確かシェル組み込みのコマンドだよな?
322 名前:デフォルトの名無しさん [2007/01/31(水) 11:02:08 ] age
323 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 11:10:17 ] 現在このスレは使われていません
324 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 13:36:14 ] >>321 シェル組み込みのコマンド、っていう表現は微妙 OS標準の外部コマンド。 つか、DEBUGコマンドでどんなバッチファイルを作るんだ? アセンブラ入力でプログラム作るか、バイナリエディタ代わりに 使うくらいしかなさそうだが、アセンブラを使ったら アセンブラスレへ誘導されるんじゃね?
325 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 13:51:17 ] >324 あれ外部コマンドだったのか… 確かにXPで見たらdebug.exeがあったが 昔は内部コマンドだった気がするのだけれど気のせいか。
326 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 14:43:01 ] バッチ - batch 必要な指示をあらかじめすべて与えておき、これを一挙に処理すること。自動処理。 バッチファイル MS-DOSやWindowsで複数の処理をまとめて行う(バッチ処理)ときに使われる、 起動するプログラムを順に列挙したファイル。 バッチファイルには「.BAT」という拡張子がつく。
327 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 03:59:21 ] text-binaryコンバータであるISHはそれ自身のバイナリイメージをdebug.exeでビルドする形で配布されてなかったっけ?
328 名前:あぼーん mailto:あぼーん [あぼーん] あぼーん
329 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 12:43:34 ] >>327 されてた、懐かしいな。 まだASCIIネットやら草の根ネットやらでIP接続なんて夢のまた夢だった頃だ。 今そんなバッチファイル投げたら怪しすぎるよな。
330 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 17:38:36 ] debug.exeを使って、cscript.exeのファイルのオフセット 000017B2: 77 63 wをcにメモリ上で書き換えて実行なんてできる? それを>>253 のバッチ部分に組み込めるといいかも。
331 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 18:49:46 ] そんなの直接コンソール叩けばいいだけだろ
332 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 20:02:50 ] @echo off copy %SYSTEMROOT%\system32\cscript.exe cscript.bin echo e 18b2 63 > c.tmp echo w >> c.tmp echo q >> c.tmp debug cscript.bin < c.tmp ren cscript.bin cscript.exe del c.tmp
333 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 08:02:43 ] >>332 copyしてrenじゃダメだろ。
334 名前:デフォルトの名無しさん [2007/02/02(金) 13:43:59 ] あげー
335 名前:あぼーん mailto:あぼーん [あぼーん] あぼーん
336 名前:デフォルトの名無しさん [2007/02/02(金) 17:13:30 ] cscript.exeがアップデートされなきゃいいけれど
337 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 17:36:21 ] debug.exeじゃ32bitアプリ扱えないみたい
338 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 17:11:01 ] debug.exeは諦めて、.wsfを.cmdに書き換え ファイル CSCRIPT.EXE と CSCRIPT2.EXE を比較しています 000017B2: 77 63 000017B4: 73 6D 000017B6: 66 64 @ECHO OFF CScript2.exe //NoLogo "%~f0" %* GOTO :EOF <job> <script language="vbscript"> WScript.Echo "あいうえお" </script> </job> .csfとかに書き換えて関連付けるとよいかも
339 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 17:28:00 ] GOTO :EOF 以降はただのテキストデータにすぎないし、 バッチの実質的な中味は1行だけか とてもプログラミングとは呼べないな
340 名前:デフォルトの名無しさん [2007/02/03(土) 17:33:35 ] どう見てもプログラミングじゃないか
341 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 17:45:04 ] >>339 じゃあ何かプログラミングと呼べるものを見せてくれ。
342 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 17:47:42 ] どういう使い道があるか分かりませんが、 ファイル CMD.EXE と CMDX.EXE を比較しています 00037596: 42 4A 00037598: 41 53 0003759A: 54 44 CMDX.EXE /C hoge.JSD なんてことができます。
343 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 18:13:52 ] バッチだけじゃプログラミングは不可能ということだね
344 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 21:27:22 ] その可能性を模索するのはこのスレにしか出来ない
345 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 15:54:40 ] フォルダ内の*.exeファイル複数個(不特定)を全て実行する ってバッチは作れませんか?
346 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 16:12:34 ] >>345 @echo off for %%i in (*.exe) do "%%i"
347 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 16:19:02 ] >>346 どうもです。 あと出来ればでいいですが、引数をつけたりは出来ますか? 具体的にやりたいことは、WindowsのHotfixをCDに貯めて OS再インストール後にバッチからHotfixを自動でインストールさせたいのですが、 引数で/qをつけないと確認メッセージが大量に出てくるので。
348 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 16:20:55 ] とりあえずnliteでできることをバッチでやりたいらしいことは分かった。
349 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 16:29:33 ] ほとんどのhotfixはnliteで統合できますが、nliteだと弾かれるのがあるので。 あと、hotfixを全て入れるとCD一枚に入りきらないので。
350 名前:あぼーん mailto:あぼーん [あぼーん] あぼーん
351 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 16:36:28 ] 少しぐらい脳みそ使えよ、と
352 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 21:12:28 ] コンソールを最小化するバッチファイル @ECHO OFF MORE +7 "%~f0" >"%~f0.vb" "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vbc.exe" "%~f0.vb" DEL "%~f0.vb" "%~f0.exe" DEL "%~f0.exe" GOTO :EOF Public Class Module1 Private Declare Auto Function GetConsoleTitle Lib "kernel32.dll" (lpConsoleTitle As System.Text.StringBuilder, nSize As Integer) As Integer Private Declare Function ShowWindow Lib "user32.dll" (hwnd As Integer, nCmdShow As Integer) As Integer Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal className As String, ByVal WindowsName As String) As IntPtr Public Shared Sub Main() Dim lpConsoleTitle As New System.Text.StringBuilder(1024) GetConsoleTitle(lpConsoleTitle,1024) ShowWindow(FindWindow(Nothing,lpConsoleTitle.ToString()),6) End Sub End Class
353 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 21:13:36 ] >>347 "%%i"のあとに/q付ければいいと思うけど。
354 名前:デフォルトの名無しさん [2007/02/04(日) 21:17:09 ] スレ違いといいながらも保守してくれるあたりが偉いね
355 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 22:09:03 ] ノートンが反応したけどウイルス?
356 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 22:46:50 ] >>355 ウイルスが1人常駐してますが気にせずに
357 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 11:39:35 ] ここはPowerShellアリなのだろうか
358 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 12:08:43 ] PowerShellはcmd.exeやcommand.comとは違う系統なので ↓がいいのでは。 Windows PowerShell (正式版リリース)1.0 pc10.2ch.net/test/read.cgi/tech/1163818863/l50
359 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 13:27:10 ] Windows板のが本スレらしい Windows PowerShell (正式版リリース)1.0 pc10.2ch.net/test/read.cgi/win/1163764836/
360 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 18:37:29 ] >>359 本スレでなくてwin板のPowerShellスレってだけだろ
361 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 21:21:10 ] どっちもあんまり賑わってないようだが。
362 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:22:32 ] バッチファイルに配列ってある?
363 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:28:09 ] ないよ
364 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:35:14 ] 変数名を動的に使えばそれっぽいことは出来るな
365 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 01:15:54 ] 最近、バッチファイルにハマってて、覚えたてオ○ヌーのごとく、 可能な限りいろんなことバッチファイルでやってるんですが、 バッチファイルでパイプの入力って利用できんもんなんでしょうか? これが可能ならできることの幅が広がって非常にうれしいのですが。
366 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 01:34:14 ] >>365 幅が広がって良かったね
367 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 01:58:52 ] >>366 できるの? どうやって受け取るの? @copy con %TEMP%input_buffer.txt >nul 2>nul とかやってもできないし・・・