[過去ログ]
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1489207631/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
405: デフォルトの名無しさん [sage] 2018/03/17(土) 05:37:29.93 ID:nxO/ldT7 Ruby で作った require 'stringio' ary = [] File.open(ARGV[0]) do |io| text = io.read text.rstrip! # 末尾の連続した空白を、すべて削除する sio = StringIO.new text ary = sio.readlines # 全行を配列に読み込む if ary[-1] == '-- hoge' ary[-1] = "hoge\n" elsif /hoge/ !~ ary[-1] # hoge を含まない ary[-1] += "hoge\n" else return end end # 一旦ファイルを削除してから、書き込む File.open(ARGV[0], 'w') { |io| io.write ary.join } http://mevius.5ch.net/test/read.cgi/tech/1489207631/405
406: デフォルトの名無しさん [] 2018/03/17(土) 12:51:31.78 ID:HNxDhnRb >>405 あのーバッチって聞いてるのにrubyのスクリプト出されても困るんですけど http://mevius.5ch.net/test/read.cgi/tech/1489207631/406
407: デフォルトの名無しさん [sage] 2018/03/17(土) 13:17:48.14 ID:FI/uI0vX やらなくても言い余計なことをして場を混乱させる人って必ずいるよね http://mevius.5ch.net/test/read.cgi/tech/1489207631/407
408: デフォルトの名無しさん [sage] 2018/03/17(土) 13:29:47.44 ID:Y0/A+N6A ルビ厨の相手するなよ... http://mevius.5ch.net/test/read.cgi/tech/1489207631/408
409: デフォルトの名無しさん [sage] 2018/03/17(土) 13:33:32.46 ID:T/uji2Bj ロジック真似すればいいだけじゃん 作ってくれじゃなくて教えてくれなんだから Lispで回答されて読めないのは理解できるが 上のRubyくらいなら何の問題もないだろ http://mevius.5ch.net/test/read.cgi/tech/1489207631/409
410: デフォルトの名無しさん [sage] 2018/03/17(土) 15:03:38.07 ID:RY7g5/8I 聞かれてるのはバッチでの実現手段なのにロジックとか言い出してどうすんだよ http://mevius.5ch.net/test/read.cgi/tech/1489207631/410
411: デフォルトの名無しさん [sage] 2018/03/17(土) 15:06:43.59 ID:9hc/1qQU 文字列の比較も削除も面倒だから バッチではやらないほうがいい http://mevius.5ch.net/test/read.cgi/tech/1489207631/411
412: デフォルトの名無しさん [sage] 2018/03/17(土) 17:30:52.69 ID:4x6FsbbS vbscript版作ったけどバッチ限定なら貼らなくいい? http://mevius.5ch.net/test/read.cgi/tech/1489207631/412
413: デフォルトの名無しさん [sage] 2018/03/17(土) 18:08:03.98 ID:RY7g5/8I >>404 一応無理矢理ここまで作ってみたけど、ファイルの中身や指定文字列に特殊文字が入ってると 容赦なくコケるという地獄仕様のままなんで、限定的にしか使えないと思う。 有意な最終行の内容にあわせて結果ファイルを出力するバッチ https://pastebin.com/mh9BZDCv コケないようにやるにはどうすればいいのかな・・・。誰かうまいやり方があれば教えてくれ。 http://mevius.5ch.net/test/read.cgi/tech/1489207631/413
414: デフォルトの名無しさん [sage] 2018/03/17(土) 18:14:53.08 ID:4x6FsbbS 読んでてなんか泣けてきた http://mevius.5ch.net/test/read.cgi/tech/1489207631/414
415: デフォルトの名無しさん [sage] 2018/03/17(土) 18:22:19.25 ID:RY7g5/8I >>414 俺の選んだ手法がアホなだけかもしれんけど、バッチって基本的に制約多くて泣けてくるもんだから・・・( ノД`) せっかくだしvscript版もどこかに貼ってもらえるとありがたいな。 http://mevius.5ch.net/test/read.cgi/tech/1489207631/415
416: デフォルトの名無しさん [sage] 2018/03/17(土) 18:29:59.15 ID:71uTBaAx >>412 >>1にそれらしいことは書いてあるから、ダメってことはないだろう ただ、「Jscript・Perl等の埋め込み」って何だろう バッチファイルに他言語のコードを埋め込めるのか? http://mevius.5ch.net/test/read.cgi/tech/1489207631/416
417: デフォルトの名無しさん [sage] 2018/03/17(土) 18:38:49.28 ID:RY7g5/8I 「バッチ JScript」とかでググればいいんじゃないか http://mevius.5ch.net/test/read.cgi/tech/1489207631/417
418: デフォルトの名無しさん [] 2018/03/17(土) 19:54:28.64 ID:HNxDhnRb >>413 ありがとうございますとても参考になりました http://mevius.5ch.net/test/read.cgi/tech/1489207631/418
419: デフォルトの名無しさん [sage] 2018/03/17(土) 21:16:57.69 ID:Eknm4yJC @echo off set n0=0 set n1=0 set n2=0 set file="xxx.txt" set newfile="new.txt" set word=xxx type nul>new.txt for /f "tokens=1* delims=:" %%i in ('findstr /n "." %file%') do set n0=%%i for /f "tokens=1* delims=:" %%i in ('findstr /n /c:"%word%" %file%') do set n1=%%i for /f "tokens=1* delims=:" %%i in ('findstr /n /c:"-- %word%" %file%') do set n2=%%i if %n0% equ %n1% if %n1% neq %n2% goto :eof if %n0% equ %n2% (call :del-line %n2%) else (copy /y %file% %newfile%>nul) call :add-line move /y %newfile% %file%>nul goto :eof :del-line for /f "tokens=1* delims=:" %%i in ('findstr /n ".*" %file%') do if %%i neq %1 echo;%%j>>%newfile% goto :eof :add-line echo;%word%>>%newfile% goto :eof http://mevius.5ch.net/test/read.cgi/tech/1489207631/419
420: デフォルトの名無しさん [sage] 2018/03/18(日) 00:33:29.96 ID:Sr1iY1Ai ループ回しすぎじゃね? 小さいファイルならいいだろうけど でかいログファイルとかだと辛いかも http://mevius.5ch.net/test/read.cgi/tech/1489207631/420
421: デフォルトの名無しさん [sage] 2018/03/18(日) 01:44:49.36 ID:WKBkcipr バッチのfor /f 〜 in (ファイル)って1行ずつシーケンシャルにメモリに読んでるって考えていいのかな? http://mevius.5ch.net/test/read.cgi/tech/1489207631/421
422: デフォルトの名無しさん [sage] 2018/03/18(日) 04:17:33.81 ID:Cc3+LG/u >>420 wordってのがどれだけの頻度で出現するかで違ってくる もし殆ど書かれてないのなら、最後が --hogeならforループはほぼ2回分(wordが各行当たり前にあるのなら4回分) hogeやなしならforループはほぼ1回分(wordが各行当たり前にあるのなら3回分) wordと--wordの検索は一緒のループでできそうだけど あと、データ中に、&|^%"'\や%date%を入れてみたけど問題ないみたいだ(win7) http://mevius.5ch.net/test/read.cgi/tech/1489207631/422
423: デフォルトの名無しさん [sage] 2018/03/18(日) 04:26:44.33 ID:Cc3+LG/u いや各行にwordと--wordのどっちかしか無いとするなら--wordの場合で最大でも3回分か http://mevius.5ch.net/test/read.cgi/tech/1489207631/423
424: デフォルトの名無しさん [sage] 2018/03/18(日) 05:31:06.94 ID:5/8yH4g6 set /a a0=0,b=0,c=1,e=1 for /f "delims=: tokens=1*" %%i in ('findstr /n .* in.txt') do ( set "a%%i=%%j" if defined a%%i set /a b=%%i set /a c=%%i+1 ) setlocal enabledelayedexpansion if not "!a%b%!"=="!a%b%:hoge=!" set /a c=b set "a%c%=hoge" del out.txt :y echo.!a%e%!>>out.txt set /a e+=1 & if !e! leq !c! goto y http://mevius.5ch.net/test/read.cgi/tech/1489207631/424
425: デフォルトの名無しさん [sage] 2018/03/18(日) 07:42:25.76 ID:Cc3+LG/u 1万行ある適当なテキストファイルでテストしてみた >>419の方、3.1秒 (最後に-- hoge行を加えた場合 7.5秒) >>424の方、2分14秒(最後に-- hoge行を加えた場合 2分14秒) ってな結果になった >>419の方はforのループ回数は多いが、比較すると速いという結果になった http://mevius.5ch.net/test/read.cgi/tech/1489207631/425
426: デフォルトの名無しさん [sage] 2018/03/18(日) 16:56:47.62 ID:93ta1lhd Oh...ワタシ findstr /n ノキョドウカンチガイシテタネ... http://mevius.5ch.net/test/read.cgi/tech/1489207631/426
427: デフォルトの名無しさん [sage] 2018/03/18(日) 20:22:40.18 ID:93ta1lhd >>419、>>424は対象ファイルの行頭にコロンがあると消されちゃうね。 http://mevius.5ch.net/test/read.cgi/tech/1489207631/427
428: デフォルトの名無しさん [sage] 2018/03/18(日) 22:13:27.07 ID:WKBkcipr そういう後から判明するバグが紛れ込むからバッチで文字列処理は嫌なんだよな http://mevius.5ch.net/test/read.cgi/tech/1489207631/428
429: デフォルトの名無しさん [sage] 2018/03/18(日) 22:14:36.65 ID:5/8yH4g6 先頭から連続するデリミタは全て消される >>419,>>424 どっちもダメ >>424 は /? もダメ abc :::def /? -- hoge http://mevius.5ch.net/test/read.cgi/tech/1489207631/429
430: デフォルトの名無しさん [sage] 2018/03/18(日) 22:17:56.90 ID:5/8yH4g6 /? は >>419 の方がダメだった http://mevius.5ch.net/test/read.cgi/tech/1489207631/430
431: デフォルトの名無しさん [sage] 2018/03/18(日) 22:45:10.52 ID:WKBkcipr 俺が仮組みしてみたやつもforの変な仕様で空行削除されてた バッチだけで手軽には無理だな 素直に適当なスクリプト使った方がいい http://mevius.5ch.net/test/read.cgi/tech/1489207631/431
432: デフォルトの名無しさん [sage] 2018/03/18(日) 22:59:27.55 ID:Cc3+LG/u >>430 セミコロンをピリオドとかコロンとにするといいみたい echo; → echo: http://mevius.5ch.net/test/read.cgi/tech/1489207631/432
433: デフォルトの名無しさん [sage] 2018/03/18(日) 23:05:58.69 ID:Sr1iY1Ai >>425 424のほうのgoto labelをfor(/L)にすると多少速くなるけど findstrを繰り返し使ったほうが速いね メモリにも優しい http://mevius.5ch.net/test/read.cgi/tech/1489207631/433
434: デフォルトの名無しさん [sage] 2018/03/18(日) 23:09:22.00 ID:WKBkcipr >>432 どの文字に変えてもその文字が来ればデミリタ判断されておかしなぶった切りが起こるから デミリタ文字のエスケープ処理が必要になるんでは http://mevius.5ch.net/test/read.cgi/tech/1489207631/434
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 568 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s