【.cmd】 バッチファイルスクリプト %15 【.bat】 (819レス)
1-

222: デフォルトの名無しさん [sage] 2023/03/09(木) 19:15:35.15 ID:eHaHoipW(1) AAS
外部コマンドで置換できるツールがフォーカスを奪う仕様で操作できなくなるから
VMで実行したら数時間たっても終わらなくて
別の方法を探したらこれに至った

専用ソフトが見つかり無事終わった
223: デフォルトの名無しさん [sage] 2023/03/10(金) 02:47:18.98 ID:5g8/KHh8(1) AAS
Ruby なら、

re = /あい/

text = <<'EOT'
xあいxあい
yあ
いy
あい
EOT

puts dest = text.gsub( re, 'そら' )

出力
xそらxそら
yあ
いy
そら
224: デフォルトの名無しさん [sage] 2023/03/10(金) 03:09:52.26 ID:dbCMTPvQ(1) AAS
チラシの裏で
225
(1): デフォルトの名無しさん [sage] 2023/03/10(金) 17:32:01.38 ID:eGLVllnw(1/2) AAS
散々コマンドリファレンスを読んだりググったけど分からないことを教えてください。

type data.txt | hoge.bat
みたいな事がしたいのですが、バッチスクリプトで、
・bash での read line
・VBScript での WScript.StdIn.ReadLine
のように、1行ずつ標準入力を読むことは可能でしょうか?やっぱり駄目でしょうか?
226
(1): デフォルトの名無しさん [sage] 2023/03/10(金) 18:36:07.72 ID:3mB0yP28(1) AAS
for /F
227
(1): デフォルトの名無しさん [sage] 2023/03/10(金) 18:44:37.57 ID:KiwyNmEo(1) AAS
何がやっぱりなのかわからん
もっとちゃんとググれ
228: デフォルトの名無しさん [sage] 2023/03/10(金) 19:12:34.24 ID:eGLVllnw(2/2) AAS
>>226
ヒントありがとう。for の中であのコマンドを使うんか…。

>>227
上から目線のジジイはすっこんでろ。
どうせ分かんないんだろ。
ということで正解はここには書かん
229: デフォルトの名無しさん [sage] 2023/03/10(金) 19:31:43.62 ID:hNo+M64i(1) AAS
要するに見ての通り他のコマンドからパイプで渡された標準入力をバッチファイルで受け取りたいと言う事でしょ
無理なんじゃね
230: デフォルトの名無しさん [sage] 2023/03/10(金) 19:46:29.11 ID:vz26ACYY(1) AAS
やっぱり(予想通り・諦め・失望)
231: デフォルトの名無しさん [sage] 2023/03/10(金) 20:58:45.48 ID:c3BQ1P8m(1/4) AAS
こんなのでもいいかな?
@echo off
set lines=0
for /f "tokens=*" %%i in ('more') do (
set data=%%i
call :sub
)
goto :eof
:sub
set /a lines+=1
echo %lines% - %data%
232: デフォルトの名無しさん [sage] 2023/03/10(金) 21:03:30.78 ID:c3BQ1P8m(2/4) AAS
もちろん
forループの特性上、空白行はスキップされたりいろいろするので
finsdtrと組み合わせたり色々しないといけないけど
過去ログにその話はあったかと
233: デフォルトの名無しさん [sage] 2023/03/10(金) 21:21:55.47 ID:c3BQ1P8m(3/4) AAS
一応表示は""で括ったほうがいいかな
データ内容次第ではエラーとか色々起きるんで
234: デフォルトの名無しさん [sage] 2023/03/10(金) 21:27:21.03 ID:c3BQ1P8m(4/4) AAS
バッチの入力データ次第という奴はどうしようもないことは以前から何度もレスされてる
""で括ってもダメで遅延環境変数で出力するのが一番まともかも
完全ではないだろうけど
235: デフォルトの名無しさん [] 2023/03/18(土) 01:36:02.39 ID:iEi+ABmN(1) AAS
フォーいーちないのか?
236: デフォルトの名無しさん [] 2023/04/13(木) 18:51:07.20 ID:dCQIGdp/(1) AAS
>>225
bing のチャットAIに丸投げしてみた

バッチスクリプトで標準入力を1行ずつ読む方法については、以下のような方法があります¹⁴。
- `for /f %%[アルファベット1文字] in ([ファイル名]) do ([処理])` を使う方法
- `set /p 変数名=` を使う方法

例えば、以下のようなバッチスクリプトで、data.txt の内容を hoge.bat に渡すことができます。
```
@echo off
for /f %%a in (data.txt) do (
echo %%a | hoge.bat
)
```
上記の例では、data.txt の内容を1行ずつ読み込み、hoge.bat に渡しています。¹
237: デフォルトの名無しさん [sage] 2023/04/14(金) 12:47:02.76 ID:ITYRpePX(1) AAS
質問は受け側のバッチの内容だろ
送り側でfor文にする意味不明
238: デフォルトの名無しさん [sage] 2023/04/14(金) 13:02:44.39 ID:twidN+O+(1) AAS
処理対象がconioだった名残がたまたま残ってただけで
バッチ自体に標準入力という概念は無さそう
239
(1): デフォルトの名無しさん [sage] 2023/04/16(日) 15:03:53.79 ID:OSGOKcik(1) AAS
ループ処理やif分でもカッコ内の変数スコープがおかしくなるのはどういう原理なんです?
240: デフォルトの名無しさん [sage] 2023/04/16(日) 15:21:04.10 ID:j/ssGNNl(1/4) AAS
実行する行の解釈の後に実行されるから
この行の解釈は(から)までは1行として一気に解釈される
つまり括弧の中の代入文があったとしても実行前の解釈の時点で(その時点の値で)展開されてしまう
241: デフォルトの名無しさん [sage] 2023/04/16(日) 15:36:27.49 ID:j/ssGNNl(2/4) AAS
>>239
set /?
に詳しい説明があるので読んでみること
242: デフォルトの名無しさん [sage] 2023/04/16(日) 16:30:15.10 ID:zYIf7I3E(1) AAS
なにをやってスコープがおかしくなったのか具体例を上げてくれないとなんとも言えないな
243: デフォルトの名無しさん [sage] 2023/04/16(日) 16:43:43.01 ID:j/ssGNNl(3/4) AAS
いやだからスコープなんて高級な概念は存在しないんだけど
244: デフォルトの名無しさん [sage] 2023/04/16(日) 16:45:17.05 ID:Dywad+WI(1) AAS
バッチファイルの言語仕様はウンコすぎるから
if ... call :foo "%~1"
for ... call :foo "%%~i"
とかやっといた方がミスが少ない
245: デフォルトの名無しさん [sage] 2023/04/16(日) 16:45:38.04 ID:j/ssGNNl(4/4) AAS
いやsetlocalがあったか
でもそれを使ってるんならまず自分のやってることは認識してるはずなんだが
246
(1): デフォルトの名無しさん [sage] 2023/04/18(火) 09:44:21.06 ID:N1MfEhNS(1) AAS
ファイルディスクリプタの1(標準出力)と3を同時にリダイレクトすると
以降プロンプトや標準出力が表示されなくなるのはなぜでしょう?
ハング等ではなく表示されないだけで、cmdとの対話モードは続いているようです。

C:\> dir >nul 3>nul
dir  ←表示されない
dir >&2  ←表示される
winver  ←起動する
1-
あと 573 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.021s