[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
631: 627 2018/07/15(日)12:40 ID:3kOM020K(2/2) AAS
>>628-629
あー、600行もあったらファイルのオープン・クローズ処理の影響が大きくなるねぇ。
カッコで括ると「括った内容、1行で延々書かれたものとして処理」してくれる。多分こういう用途のためにあるんだと思う。
なのでカッコ内の特殊文字エスケープは通常と変わらなかったはず…。(確証はないけど)

俺はヒアドキュメントっぽいことがしたい時、いちいちリダイレクトを入れるのが面倒&読みづらいこともあってこう書いてるわ。
632: 2018/07/18(水)10:40 ID:w8OpeSfX(1) AAS
>>629
別のバッチファイルにするのは駄目なん?
call b.bat >file
なら()の処理とか不要では。
633: 2018/07/18(水)21:57 ID:6GF3Pq4/(1/2) AAS
別のバッチファイルにする必要も無いんじゃね?

@echo off

call :abc > d.txt
goto :eof

:abc
echo xxx
echo yyy
echo zzz
634: 2018/07/18(水)22:23 ID:pnNaFbbR(1/4) AAS
それもいいんじゃない?
635
(2): 2018/07/18(水)22:31 ID:pnNaFbbR(2/4) AAS
ちょっと聞きたいんだが…

for /f "tokens=1* delims=:" %%A in ('findstr /n "^" filename.txt') do echo.%%B
これ、バッチが標準入力から受け取ったものを処理する雛形らしいんだけど…

findstr /n "^"
これアリか?正規表現として成立してない!?何だこれ??

findstr /n ".*"
ならアリだしこう書くべし。正規表現として何でもマッチする。

なんだけど何で findstr /n "^" が通るのか分からんわ。
636
(1): 2018/07/18(水)22:46 ID:6GF3Pq4/(2/2) AAS
それ、確か : で始まる行が不味いんじゃね?
637
(1): 2018/07/18(水)23:08 ID:apOKL4Dj(1) AAS
>>635
findstrはあくまで検索パターンにマッチする行全体を返す。
行頭文字があればマッチと判断するんだな、たぶん"$"でも通るんじゃね?w
638: 2018/07/18(水)23:17 ID:pnNaFbbR(3/4) AAS
>>636
外部リンク[html]:blogs.yahoo.co.jp
が上手いことやってる。感心した。万能ではないらしいが検証中。
tee が作れるかもしれん。

>>637
マジだった。findstrはアホの子だった。
639: 2018/07/18(水)23:20 ID:pnNaFbbR(4/4) AAS
あー、もっとも、find /v "" が空文字列にマッチする時点で駄目ではある。
640: 2018/07/18(水)23:47 ID:Ppp31GO+(1) AAS
このスレは勉強になる
641
(1): 2018/07/19(木)00:47 ID:oVpGn6oR(1) AAS
>>635
正規表現としてじゃなくて cmd のエスケープかと。

echo;abc | findstr /n ""
FINDSTR: 検索文字列がありません。

echo;abc | findstr /n "^"
1:abc
642: 2018/07/19(木)06:16 ID:hT+uAClu(1) AAS
>>641
^ の左側に " があるので ^ はただの文字
643
(4): 2018/07/19(木)08:15 ID:31+wDFSY(1) AAS
プロセスが特定の文字列を出力したら処理を終了させたくて下記のようなの書いてみたけど思うように動かないです。

process.exe | find "hoge"&&TASKkill /F /im process.exe

&&で指定したコマンドは元のプロセスが終了しないと実行されないのでしょうか?
644
(1): 2018/07/19(木)08:26 ID:HqFtoS+0(1) AAS
>>643
多分、process.exeが終了しなくても、標準入出力をクローズすればパイプは渡ってくるんじゃないかな?
645: 2018/07/19(木)22:23 ID:I1yUatr2(1) AAS
>>643
リファレンス読めよ。
&&を何かに変えれば多分動くぜ。
646: 2018/07/20(金)01:23 ID:FDkJiEQ5(1) AAS
コマンドプロンプトって、論理和使えないんだっけな
647: 2018/07/20(金)02:06 ID:2iB3qPvx(1/2) AAS
& コマンドの連結
&& 前のコマンドの実行結果が正常(ERRORCODE=0の場合)に後ろのコマンドを実行する
|| 前のコマンドの実行結果が失敗(ERRORCODE>0の場合)に後ろのコマンドを実行する
648: 2018/07/20(金)02:28 ID:2iB3qPvx(2/2) AAS
ERRORLEVELだったよ
あと、環境変数は実行前に展開されるため、前のコマンドで設定した値を後ろのコマンドで参照すると思わぬ結果になる
for文での注意と同様で、遅延環境変数を使うとかすれば大丈夫だが
また行を分ける場合に%errorlevel%を使うなら参照だけにすること
(設定すると単なる環境変数として扱われる)
あと、そもそも前のコマンドが終了してないのにパイプにデータが渡ってくるのかも要確認
649
(1): 643 2018/07/20(金)04:26 ID:ukKUYn/2(1) AAS
レスありがとうございます
標準入出力をクローズというのがちょっと分からないんですがどのようにすればいいのでしょうか?
650
(1): 2018/07/20(金)06:55 ID:gIwkChrm(1) AAS
process.exe に標準入出力をクローズさせるんだよ
651: 2018/07/22(日)19:18 ID:WPYgWuMH(1) AAS
そんなことするぐらいならvbsのExec使えばいいと思うの
652
(1): 2018/07/22(日)19:49 ID:Gp0M410Q(1) AAS
>>649
>>644 >>650 の言ってることは戯言だから気にするな。
process.exe が終了したら勝手にクローズする。
653: 2018/07/22(日)20:27 ID:jf6K150S(1) AAS
終了してから TASKkill しても見つからんエラーが出るだけで無意味
654: 643 2018/07/22(日)20:27 ID:oUJ4s6M9(1) AAS
リダイレクトしてテキストファイルに出力しながらstartで立ち上げた別のbatにfindして貰う事で解決しました。
655: 2018/07/22(日)23:35 ID:FoHjHQaV(1) AAS
>>652
process.exeってのが自作の場合、そうしろってことだろ
656
(1): 2018/07/23(月)17:41 ID:1W7qAEKf(1) AAS
Linuxでコマンド実行した結果とWindowsでコマンド実行した結果を
一つのファイルに書き出したいんだけど、改行コードが違っている
バッチファイルでCR LFではなくLFで出力したいなと思って
このコードを見つけたんだが何やってるのかさっぱりわからない

<NUL set /p=message が set /p=message <NUL と同じ意味で
「メッセージを表示してユーザーの入力内容を変数に入れるコマンド」の
代入先変数の省略 + 入力内容省略 = 改行なしecho
ということはわかったんだけど、^%LF%%LF% がなんなのか
なんでこれでうまく動くのかわからん

外部リンク:stackoverflow.com

SET LF=^

REM important to have two blank lines after the SET command
<NUL set /p=test line^%LF%%LF%> t.txt
657: 656 2018/07/24(火)01:43 ID:tpeQiESg(1/13) AAS
違うこと調べていて、たまたま答えにぶつかったぜw

外部リンク:kensou1900.blog96.fc2.com try-7.html
658: 2018/07/24(火)01:44 ID:tpeQiESg(2/13) AAS
違うこと調べていて、たまたま答えにぶつかったぜw
外部リンク:kensou1900.blog96.fc2.com try-7.html

> キャレット(^)直後の文字がLFの場合は特殊な動作になる。
> キャレ ット(^)の後ろにLFがある場合、そのLFは削除され、
> 次の文字がエスケープされる。不思議なことにキャレ  ット(^)の後ろにLFが2つ続く場合は、
> 前のLFは消えるが、後ろのLFは通常の文字のように扱われる。
> この動作を使ってLFをコマンドに渡したり、変数名や変数の値に使用することができる。
>
> LFがエスケープされた場合、バッチファイルの続 きを取り込まないといけなく なる場合がある。その場合、1.から3.が再度行われるようだ。

set /p=test line^[LF][LF]
これはこの部分だな

> 不思議なことにキャレット(^)の後ろにLFが2つ続く場合は、
> 前のLFは消えるが、後ろのLFは通常の文字のように扱われる。

単なる不思議な動作か。なるほどな!

SET LF=^

REM important to have two blank lines after the SET command

こっちも未だよくわからいが、
まあこれも単なる不思議な動作だろう

なっとくした
659: 2018/07/24(火)01:45 ID:tpeQiESg(3/13) AAS
なんでこれが書き込めないんだよ

fc2.com
660: 2018/07/24(火)01:46 ID:tpeQiESg(4/13) AAS
↑これは書き込めるのか

↓これはどうだ?
a.fc2.com
1-
あと 342 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.017s