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/
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%
401 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 11:18:02.60 ] batファイルからカラーダイアログを呼び出せることって無理ですか?
402 名前:397 mailto:sage [2011/12/29(木) 00:13:43.43 ] >>398-400 ループ処理が難しそうですが、なんとかできそうです。 ありがとうございました。
403 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 02:26:05.21 ] mshta "about:<script>function b(){new ActiveXObject('Scripting.FileSystemObject' ).GetStandardStream(1).Write(d.ChooseColorDlg().toString(16));close();}</script> <body onload='b()'><object id='d' classid='clsid:3050f819-98b5-11cf-bb82-00aa00b dce0b'></object></body>"|more
404 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 16:14:43.54 ] 【質問】 ・1-18までカウントしていく関数(サブルーチン?)を作りたいです。 調べて自分なりに試しているのですが、上手くいかずに行き詰ってしまいました。 下記のように、1-9までは01-09のように0を付加して表示したいです。 01/18 処理結果 02/18 処理結果 【 OS 】 ・Windows XP Professinal SP3 【構文】 SET /A CNT = 1 SET /A IND = 18 CALL :ZERO %CNT% :ZERO IF "%1" LEQ "9" ( SET /A DD = %1 SET /A DD += 100 SET /A ABC = %DD:~-2% ECHO %DD:~1,2%/%IND% SET /A CNT+=1 ) EXIT /B よろしくお願いします。
405 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:07:34.22 ] > 1-18までカウントしていく関数(サブルーチン?)を作りたいです。 仕様がよくわからん。18超えたらどうするの? 01,02,03,・・・17,18とechoさせたいわけじゃないよね? 処理結果とあるけど、別の処理をループさせてのカウントかな? だとすればわざわざサブルーチンにしなくても set CNT=101 で101-118をカウントして %CNT:~-2% で表示させればいい @echo off set CNT=100 :loop set /a CNT+=1 echo %CNT:~-2%/18 echo 処理結果 if not %CNT%==118 goto :loop pause
406 名前:450 mailto:sage [2012/01/05(木) 18:39:55.01 ] >>405 レスありがとうございます。 教えていただいた方法でできるようになりました。 どうもありがとうございました! SQLiteのVACUUMとREINDEXのバッチ作成の際に、01/18: ファイル名.拡張子 と表示して、 現在何個あるうちの何番目を処理中かどうか、というのを表示させたく作成中でした。 その際に、1-9までについては先頭に0を付加したかったのですが、書式的なもののやり方 が分からずにいました。 ※1/18ではなく、01/18のように。 【バッチ内容】 SET ADDONS = addons.sqlite SET /A CNT = 100 SET /A IND = 18 CALL :loop %CNT% %ADDONS% REM ここに 01/18: addons.sqlite と表示させたい。 sqlite3.exe ..\..\%ADDONS% VACUUM sqlite3.exe ..\..\%ADDONS% REINDEX :loop SET /A CNT += 1 ECHO %CNT:~-2%/18: %2 EXIT /B 【希望結果内容】 01/18: addons.sqlite
407 名前:404 mailto:sage [2012/01/05(木) 18:43:23.40 ] >>404 です。 >406の名前欄が間違っていました。 失礼しました。 ※教えていただいてできたので良かったのですが、 >>404 でなぜうまく動作しないのか謎でモヤモヤが。 どうもありがとうございました。
408 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 21:09:16.86 ] >>407 if "12" leq "9" echo 文字列の比較は一桁目から
409 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 21:11:30.07 ] ×一桁目 ○左
410 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 22:31:16.99 ] コマンドプロンプト上で for /L %i in (1,1,10) do @(set /a 123) とやると 123123123123123123123123123123 と改行挟まずに出力されるんですが、これのメカニズムを誰か説明してください。
411 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 22:46:19.69 ] set が改行を剥いでいるんじゃね。 set /P とかで、入力は改行で終了するだろうけど、結果には改行が入っていない方が便利だし。
412 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 23:14:53.08 ] setが改行を出さないだけだろ
413 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 19:02:34.30 ] :loop execcommand sleep 600 goto loop というループがあって 真ん中あたりでユーザーがその挙動を変えられるようにしたいんだけど 何も入力がなければループを妨げない、 入力があったらキーを set key=? して call :setoption するにはどうすればいいでしょう。
414 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 19:47:08.87 ] >>413 www.vector.co.jp/soft/dos/util/se053514.html こういうツール使うとか これがまともに動くかどうかわからないから試してダメだったら 似たようなの探すか、作って配布してくれ
415 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 20:36:27.20 ] choice/?
416 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 22:04:41.80 ] tomeout/?
417 名前:デフォルトの名無しさん [2012/01/12(木) 22:42:42.89 ] treeを入れるとそのディレクトリのファイルをツリー形式で出力されますが これに加えてファイル名+サイズ名+最終更新日を出力したいのですが可能でしょうか?
418 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 23:00:03.63 ] dir /s を整形するとか。。めんどくさそうだけど。
419 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 23:03:13.11 ] vbs とかで作った方が楽かと。
420 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 23:18:18.22 ] バッチでは?
421 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 01:17:12.05 ] ttp://www1.axfc.net/uploader/Sc/so/309130.jpg ttp://www1.axfc.net/uploader/Sc/so/309131.zip こんなのどう 普通にtreeするのに比べるとめちゃくちゃ遅いけど 表示のスタイルは tree /a /f を参考に ファイルの表示は dir /a-d /t:w を行ごとに
422 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 05:19:27.39 ] >>417 www.vector.co.jp/soft/win95/util/se247619.html
423 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 06:58:49.41 ] >>422 スレチ
424 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 15:57:19.14 ] >>415-416 choiceはできそうだけど、timeoutはどう判定すんだ?
425 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 17:00:32.46 ] むりぽ
426 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 22:16:52.32 ] 画面で区別できんだからバッチでもできるっしょ
427 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 02:31:56.51 ] だめぽ
428 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 00:23:57.26 ] %1に渡したファイルやフォルダがルートにあるのかどうかを判定するのってどう書けばいいですか? %~1が3文字だったら、とか思いついたけどもっと上手い方法だったり定石があるなら教えてください
429 名前:428 mailto:sage [2012/01/15(日) 00:25:03.61 ] 訂正します > %~1が3文字だったら %~dp1が3文字だったら
430 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 00:36:58.61 ] UNCとかにも対応したいなら set a=%cd% push .. set b=%cd% popd して比較するとか
431 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 01:41:37.76 ] "%~p1" == "\" だとダメなの?
432 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 09:17:31.43 ] >>430 ありがとうございます UNCのことはすっかり失念していました cdでUNCはカレントに出来ないと言われて困りましたけど pushd "%~dp1" で勝手にネットワークドライブの割り当てをやってくれて カレントディレクトリを移すことが出来ました >>431 それでよかったですよねありがとう pushd "%~dp1" if exist "%cd%\%~nx1" (call :ROOTEXP "%cd%\%~nx1") else echo ファイル見つからない pause exit :ROOTEXP echo "%~1" echo "%~dpnx1" if "%~p1"=="\" (echo ルートディレクトリにあるよ) else echo ルートじゃないよ exit /b 一応、これで意図した動作になりました ルートにあるファイルやフォルダの場合、echo "%~1" がZ:\\test.txt のように\\となるのですが 正常に動いてるみたいですし、"%~dpnx1"で正しいパスは取れるのですが この書き方で問題が出るケースはありますでしょうか?
433 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 20:29:01.37 ] 空きメモリか使用メモリを標準出力でゲットするコマンドないですか。 memはさすがに消滅していたw
434 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 21:04:49.82 ] wmic
435 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 00:29:25.23 ] tasklistの各行の出力結果を合計してみるとか
436 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 03:38:43.26 ] それはねーよ
437 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 12:21:08.71 ] wmic調べてみます。ありがとうございました。
438 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 12:27:17.34 ] wmic os get freephysicalmemory
439 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:08:24.54 ] for /f %%i in ('wmic os get freephysicalmemory') do set x=%%i echo %x% ECHO は <ON> です。
440 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:35:24.25 ] for /f "eol=F" %i in ('wmic os get freephysicalmemory') do echo %i
441 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:49:41.37 ] ECHO は <ON> です。
442 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 21:14:43.83 ] for /f "skip=1" %i in ('wmic os get freephysicalmemory') do if not defined mem set mem=%i echo %mem%
443 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 23:58:50.04 ] for /f %i in ('wmic os get freephysicalmemory') do (call set x=%i) & if defined x call set mem=%i echo %mem%
444 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 03:36:44.19 ] 'wmic' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
445 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 14:12:06.16 ] Windows 2000以降のOSではWMIが標準で実装されている Windows 2000にはwmic.exeは用意されていない
446 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 15:37:33.32 ] それを言うならXP以降だろw 以降はそれも含むんだから
447 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:17:43.40 ] win2kはwmiコンポーネント実装済みだけどwmicは同梱されていないって事じゃね?
448 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 19:55:57.58 ] それを言うなら>>446 阿呆だろw
449 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 00:35:34.90 ] xp homeはwmic入ってないのか
450 名前:デフォルトの名無しさん [2012/01/22(日) 15:35:57.54 ] D:\MUSIC\(複数アーティスト)\(各々に複数アルバム)\Resize\Folder.jpg という階層で Folder.jpgを1つ上のディレクトリに上書き移動して、Resizeフォルダを削除したいのですがうまくできません。 ご教示いただけないでしょうか、一所懸命初めてバッチ書いてみましたがたぶん見当はずれです cd /d D:\MUSIC for /d %%A in (*) do ( cd %%A for /d %%B in (*) do ( cd %%B\Resize move /y Folder.jpg ..\Folder.jpg cd .. rd /s /q Resize ) )
451 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:36:07.61 ] >>450 cd /d d:\music dir /a-d /b /s Folder.jpg >list_fjpg.txt dir /ad /b /s Resize >list_Resize.txt 処理するファイルが上のリストで問題ないようならこれで出来ると思う for /f %%a in ('dir /a-d /b /s Folder.jpg') do move "%%~a" ".." for /f %%b in ('dir /ad /b /s Resize') do rd /s /q "%%~b" Resizeフォルダ以外にもFolder.jpgがあって上のがダメなら dir /a-d /b /s Folder.jpg|findstr /e /l /i "\Resize\Folder.jpg" >list_fjpg.txt これでたぶん大丈夫だと思うけど試してダメだったらfindstrのオプションとか工夫してみて
452 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:36:27.77 ] cdをpushdやpopdに変えて試してみてね
453 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:49:17.51 ] >>450 cd /d "D:\MUSIC" for /d /r %%a in (*) do ( pushd "%%a" call :movejpg "%%~na" popd ) goto :eof :movejpg if not "%~1" == "resize" (if not "%~1" == "Resize" goto :eof) move Folder.jpg ..\ cd ..\ rmdir resize goto :eof
454 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:51:54.76 ] jpgを拾うようにした自前のものがよく似ていたので1行目だけ編集したのを貼ってみる。 cd /d D:\MUSIC for /r /d %%i in (*) do ( if exist "%%i\resize" ( move "%%i\resize\*.jpg" "%%i" rd /s /q "%%i\resize" ) ) 趣旨が違うかもしれないが。
455 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:06:41.19 ] >>454 のを少し弄って cd /d D:\MUSIC for /r /d %%i in (*) do ( if exist "%%i\resize\folder.jpg" (move /y "%%i\resize\folder.jpg" "%%i"&&rd /s /q "%%i\resize") ) これで質問者の要求仕様を満たすんじゃね?
456 名前:450 [2012/01/23(月) 09:47:50.42 ] みなさんありがとうございます! せっかくなので環境をコピーして4つとも試してみましたがどれもうまくいきました! バッチファイルが綺麗に完走するのってピタゴラスイッチ的な爽快感がありますね
457 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 13:55:01.20 ] 2chブラウザのkakikomi.txtを自動で編集して、 日付データと本文部分だけを残すというbatファイルをつくりました find /v "Subject:" <kakikomi.txt >kakikomi2.txt find /v "URL :" <kakikomi2.txt >kakikomi3.txt find /v "From :" <kakikomi3.txt >kakikomi4.txt find /v "Mail :" <kakikomi4.txt >kakikomi5.txt というゴリ押しで一応目的は達成できたのですが、時間もかかるし無駄が多い気がします もっとスマートな書き方もあるのでしょうか? kakikomi.txt内の書き込みデータは、 -------------------------------------------- Date : 2012/01/01 00:00:00 Subject: スレッドタイトル URL : ... From : Mail : 本文 -------------------------------------------- のくり返しになっています
458 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 14:34:47.86 ] findstr/?
459 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 14:37:22.65 ] findstr /b /v "Subject: URL FROM MAIL" "kakikomi.txt" >"kakikomi2.txt" 本文の行頭に同じ文字列があったらその行も消えるけど>>457 よりはマシと思う
460 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 14:49:55.56 ] >>459 ありがとう!次回からは書いてくれたものを使ってみます
461 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 23:44:16.41 ] フォルダ内のtest*.batを順に実行したいのですが、10回callする毎に標準出力に メッセージを出したく思います ↓を実行すると毎回echoが実行されてしまうのですがどう修正すべきでしょうか? set /a N=1 for /F %%a in ('dir .\test*.bat /b') do ( call %%a set /a N = %N% + 1 if "%N%"=="10" do ( echo ---------- set /a N=1 ) )
462 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:15:29.97 ] >>461 echo onで実行されたバッチがどうなってるか見りゃわかるけど… 遅延環境変数でググってみ。
463 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:56:33.67 ] for /f %%a in ('dir /b test*.bat') do ( call %%a call :COUNT ) pause&exit :COUNT set n+=1 if %n%==10 (echo ----------&set n= ) exit /b
464 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:59:13.37 ] > set n+=1 set /a n+=1
465 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 09:22:44.38 ] 遅延環境変数のことを失念していました(ノ∀`) サンプルまで書いていただいてありがとうございます
466 名前: 忍法帖【Lv=5,xxxP】 mailto:sage [2012/01/28(土) 20:05:08.71 ] Vista/7などで環境変数を永続的に変えるのってCUI(cmd)じゃできないんですか? 95とかならexec.batをいじるとできるそうですがいい方法無いですかね マウスでカチカチみんな設定してるの?
467 名前: 忍法帖【Lv=5,xxxP】 mailto:sage [2012/01/28(土) 20:06:15.39 ] Vista/7などで環境変数を永続的に変えるのってCUI(cmd)じゃできないんですか? 95とかならexec.batをいじるとできるそうですがいい方法無いですかね マウスでカチカチみんな設定してるの?
468 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 20:08:12.26 ] setx
469 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 20:37:47.45 ] autoexec.batだろ