1 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 14:52:07.84 ID:v84I4o+L.net] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 前スレ 【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net echo.2ch.net/test/read.cgi/tech/1424858999/ 【.cmd】 バッチファイルスクリプト %12 【.bat】 https://mevius.5ch.net/test/read.cgi/tech/1489207631/ それ以前の過去スレ %10 peace.2ch.net/test/read.cgi/tech/1374205515/ %9 toro.2ch.net/test/read.cgi/tech/1335015478/ %8 toro.2ch.net/test/read.cgi/tech/1315844420/ %7 hibari.2ch.net/test/read.cgi/tech/1298873550/ %6 hibari.2ch.net/test/read.cgi/tech/1277465356/ %5 pc12.2ch.net/test/read.cgi/tech/1242268171/ %4 pc12.2ch.net/test/read.cgi/tech/1229955189/ %3 pc11.2ch.net/test/read.cgi/tech/1217860043/ %2 pc12.2ch.net/test/read.cgi/tech/1197881068/ %1 pc11.2ch.net/test/read.cgi/tech/1178281991/
252 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 12:34:19.95 ID:/kIGVJHV.net] >>244 7zaは経験ないが7zと同じだろう 引数に*としたらサブディレクトリも含む サブディレクトリを指定したら、それ以下の全部を含む そこでスイッチは関係ない ファイルだけ圧縮したいなら @echo off path C:\Program Files\7-Zip;C:\WINDOWS\system32;C:\WINDOWS; if exist archive.7z del archive.7z set a= setlocal enabledelayedexpansion for %%i in (*) do set a=!a! "%%i" 7z a archive.7z !a%! pause
253 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 12:36:06.42 ID:/kIGVJHV.net] ああ、すまん .zip に置き換えて
254 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 13:27:41.74 ID:/kIGVJHV.net] >>245 はファイル名に!^があると誤動作するので @echo off path C:\Program Files\7-Zip;C:\WINDOWS\system32;C:\WINDOWS; if exist XXX.zip del XXX.zip for %%i in (*) do 7za a XXX.zip "%%i" pause にした方がいいかもね ちなみにInfo-ZIPのzip.exeでは zip XXX.zip * だけでいいが空のサブディレクトリを作成する
255 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 08:25:16.99 ID:gSWoSWwj.net] .commandでターミナルを開いてpython3 /hoge/test.pyを入力、エンターを送信してpyファイルを実行したいのですがご教授ください。m(_ _)m echo python3 /hoge/test.pyとするとターミナルに入力はされるのですが、pythonが実行されません。 ちなみに.batでは、 cd C:\hoge\ cmd /k python test.py でpythonを実行する事ができました。 .commandで同じ事をするにはどうすればいいでしょうか?
256 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 13:48:44.19 ID:gSWoSWwj.net] 248です 解決しました。m(_ _)m echoなんか付けずに python3 /hoge/test.py でpythonが実行できました。ありがとうございます。
257 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 18:30:49.93 ID:/bUEZ7B5.net] バッチファイルからbeep音を出す echo ^G >
258 名前:beep.bat ^G は コントロールキーとG beep.batを実行すると音は出るが、エラーも出るので type beep.bat のほうがよい beep.bat 2>nul でエラーは消えるはずだが、なぜか音も出ないことがある こういう基本コマンドがなぜかない [] [ここ壊れてます]
259 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 21:28:51.00 ID:KEFOQI4b.net] >>250 beep.bat でエラーが出るのは当然 beep.bat の中身は 「あ」 と一文字書いてあるのと同じようなものだから コマンドになってない だから echo ^G> beep.dat echo type beep.txt> beep.bat とするか echo @echo ^G> beep.bat とすれば beep.bat実行でエラーは出ない ちなみに@echoとしてechoの頭に@をつける理由は そうしないと、 実行コマンドが表示される時点で一回音が鳴り echo が実行されることによって音が鳴るので 結果として2回音が鳴ることになるため
260 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 22:13:21.14 ID:KEFOQI4b.net] 無料のエディタでも制御文字を扱えるものがあるので そういったものを使うと便利かと思います たとえばNotepad++では制御文字を表示することができます https://www.howtonote.jp/notepadplusplus/install/index10.html 入力は編集-文字コード表から サクラエディタは制御文字を入力できるのに表示する方法はわかりませんでした (自分はユーザではなく詳しくないので実際はあるのかもしれない) sakura-editor.sourceforge.net/htmlhelp/HLP000255.html
261 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 22:46:13.03 ID:kzHmUXK8.net] トリッキーだが、コントロールコードを直接書かないで実現することもできるね ここの過去ログ%11にあったけど for /f "delims=0" %%I in ('cmd /u /c echo 〇') do set BEL=%%I echo %BEL%
262 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 23:09:42.80 ID:+j+1wiRe.net] バッチにバイナリエディタで入力したら どんな値でも変数に代入出来るのかな?
263 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 23:10:40.48 ID:KEFOQI4b.net] >>251 訂正 誤:echo type beep.txt> beep.bat 正:echo type beep.dat> beep.bat
264 名前:デフォルトの名無しさん mailto:sage [2019/06/18(火) 17:34:44.10 ID:eep67jJ0.net] cls|choice 1>nul 2>nul
265 名前:デフォルトの名無しさん mailto:sage [2019/06/18(火) 19:33:08.53 ID:KnqBLmEX.net] >>251 なるほど、どっちもありですね echo ^G> beep.dat echo type beep.dat> beep.bat echo @echo ^G> beep.bat @echo のこんな使い方は初めて見た、知らなかったです
266 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 06:51:19.02 ID:dygsK1bo.net] Windows Terminal早速試せるみたい。 Microsoft’s new Windows Terminal now available to download for Windows 10 - The Verge https://www.theverge.com/2019/6/22/18701365/microsoft-windows-terminal-10-download-store-features
267 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 12:23:35.72 ID:Lc+3aX4/.net] >>258 そこに書いてある Microsoftはまた、Linux用のWindows Subsystem(WSL)の パフォーマンスを向上させるために、 完全なLinuxカーネルをWindows 10に搭載することに取り組んでいます。 こっちの方が気になるなあ
268 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 12:41:20.55 ID:8sWJbccc.net] WSL2でしょ
269 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 00:46:23.52 ID:6j3DQJ1O.net] Windows7からWindows10に変えたら、IME単語登録用ソフトのIMECが動かない。 神は死んだ・・・
270 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:20:48.71 ID:sBqqHKRF.net] chcp 65001 if "hoge"=="hoge" ( echo あああ echo いいい ) pause 上みたいなbatをUTF-8で保存して実行すると 'o' is not recognized as an internal or external command, と言われてエラーになるんですが何故ですか?
271 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:23:12.67 ID:sBqqHKRF.net]
272 名前:echoの前に半角スペース3つです [] [ここ壊れてます]
273 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:52:58.06 ID:O4gheXA8.net] 良く分からんが >>258 の奴でやると もしかしたら上手くいくかもね
274 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:58:43.79 ID:O4gheXA8.net] chcp 65001 if "hoge"=="hoge" ( echo あああ& rem echo いいい ) pause
275 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 20:17:53.34 ID:O4gheXA8.net] 行末が非asciiだと不味いようだ
276 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 20:18:26.26 ID:sBqqHKRF.net] >>265 レスありがとうございます それだとエラーは出なくなりました でもなんでこんな訳のわからない動作をするのかがわかりません
277 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 20:34:02.78 ID:O4gheXA8.net] 上手く動作しないという事はバグじゃないですかね それ以上はcmdの作者じゃないので分からん
278 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 20:49:18.67 ID:yTOc80/J.net] そもそもUTF-8保存バッチなんてまともに動くの見た事無い。 バッチはUS-AsciiかシフトJIS保存が安全。いくらchcpでコードページが動かせようとも
279 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 20:51:13.72 ID:yTOc80/J.net] "シフトJIS(932) だけ? いいえ、そんなことはありません。例えば、EUC-JP(20932) も可能です。しかし、Unicode(1200)、UTF-7(65000)、UTF-8(65001)、JIS(50220) はダメです。 なので、実際上?は、シフトJIS(932) だけのようなものです。" scripting.cocolog-nifty.com/blog/2008/12/post-38f8.html
280 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:18:10.64 ID:O4gheXA8.net] ユニコードでしか表示できない文字を表示したいならともかく "あああ" とか "いいい" じゃ全く意味が無いな
281 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 07:19:54.19 ID:/FHvjGPn.net] やはりbatをUTF-8で動かすと色々不安定みたいですね 素直にShift_JISで書くことにします
282 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 08:01:27.89 ID:5bijRuYR.net] ASCIIで書いてもええんやで?
283 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 08:13:25.58 ID:QearoGxm.net] Asciiで"あああ"や"いいい"が表せるかバカ
284 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 14:39:32.78 ID:wh3oZ78w.net] シフトJISで表せない文字の例 @echo off chcp 65000 > nul set a=+nddRZwDA- chcp 932 > nul set a1=%a:~0,1% set a2=%a:~1,1% set a3=%a:~2,1% echo 森%a1%外の「%a1%」 echo %a2%田百閧フ「%a2%」 echo アクセント符号付きのアルファベット「%a3%」 pause > nul
285 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 19:26:37.84 ID:jdth62TN.net] ハードコーディングする必要ないだろ…
286 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 20:16:33.91 ID:wh3oZ78w.net] ユニコードのバッチでいいなら必要ないな echoは行末に半角スペース付けると多分ok setは二重引用符で囲めばいい
287 名前:デフォルトの名無しさん mailto:sage [2019/06/27(木) 00:26:23.36 ID:65pELY4n.net] 会得したところで今後の人生に役に立たない、もしくは自分の仕事を受け継いだ「標準的な知識の」人間に理解できないことはしない方がいい。 一子相伝の拳法とかじゃねーんだから。 バッチスクリプトに限らず、仕事でそういうことを意識できない奴は、大抵、後から見て自分自身でも読めないコードを書くものだ。
288 名前:デフォルトの名無しさん mailto:sage [2019/06/27(木) 00:27:58.62 ID:65pELY4n.net] このスクリプトは自分で終わり… とかいう書き捨てスクリプトなら大いにやって良いと思う。 使い終わったらちゃんと捨てとけよ。
289 名前:デフォルトの名無しさん mailto:sage [2019/06/27(木) 04:32:59.89 ID:41DSIiqO.net] この 低レベルに合わせる事こそ唯一の原則 みたいな風潮すごいイヤ こんなとこまで啓蒙しなくていいよ気持ち悪い
290 名前:デフォルトの名無しさん mailto:sage [2019/06/27(木) 04:53:0
] [ここ壊れてます]
291 名前:5.65 ID:6UZ42pkx.net mailto: >>279 板汚し失礼した。使わないが捨てる。 よく考えたらutf-8のバッチで変数に代入した後、 sjisのバッチに移ればいいだけだった。 utf-8のバッチは不安定だが代入だけなら大丈夫だろう。 なんで気がつかなかったんだろう。 >>280 ありがとう。 [] [ここ壊れてます]
292 名前:279 mailto:sage [2019/06/28(金) 00:34:45.44 ID:khpSyJhs.net] >>280 低レベルに合わせるわけじゃねーよ。 現代的なスクリプト言語を学んできたような人間に対して 「バッチスクリプトだけで通じる特殊で小賢しいハック」 を読ませたり書かせたりするべきじゃない、自分だけに留めとけ、結局誰得になる、って話が何故分からないかな? 今日も 「文字列にASCIIの制御コードを挟めばテスト環境でこの処理通ったんでいいでしょ」 なんつったアホンダラを叱りつけたところだ。 「そのコードが何を意味してるか分かる?」と聞いたら「空白です」だとよ。そりゃ、制御コードは「お前のエディタでは」見えないよ。アホか。 制御コードがテスト環境と違う実環境でどう解釈されるか分かったもんじゃないから却下した。 実際、実環境でこっそりテストしてみたらやっぱり処理はコケた。
293 名前:279 mailto:sage [2019/06/28(金) 00:39:45.58 ID:khpSyJhs.net] で、バッチにもイディオムがある。 「AをしたいときはBと書け」ってやつ。 そういうものは、たとえ現代的なスクリプト言語とは感覚がかけ離れていてもバッチを書くなら「嫌でも」学習せねばならない。 つまり、 ・言語や環境が想定している範囲内ならやってよし。むしろやれ。 ・範囲外ならやるな。やるなら自己責任で他人に迷惑を掛けない程度に。 ということ。 これはどんな言語やシステムにも言えること。
294 名前:279 mailto:sage [2019/06/28(金) 00:51:59.74 ID:khpSyJhs.net] もっと言うと、何かを開発するときにまず最初にやることってのが 「この言語や環境はどこまで想定しているのかを調べる」 だったりする。 自分のやりたいことに沿ってくれるかくれないのか。 くれないなら処理の一部だけやらせるに留めるなり、最初から使わないなり、そういう選択をする。 言語や環境に縛りがある場合なら、責任者の言質を取るなり、書面で誓約を取ってから作る。 見ず知らずの他人が意味も訳も分からないトリッキーなコードをメンテさせられて苦しむのを想像できないならいくらでもトリッキーにやればいい。 「このコード書いた奴、死ねばいいのに」って言われても俺には関係ない、くらいの根性腐った奴ならそうすればいい。
295 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 04:47:52.79 ID:+wrrcV+u.net] だからキモイって 創価学会員並みにキモイ 狂信者の啓蒙活動と同じ こんなところではなくおまえの会社でやってろ
296 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 07:00:46.98 ID:n6DQpX/4.net] しかしWin環境はテキストのBOMマーク推奨なのに、for /fで読み出しするとBOMをわざわざ表示するのバカだよな。 過去の検討不足がまんま固定してる
297 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 07:22:18.87 ID:utv5/5Cv.net] 面倒くさい奴が一人いるな 何を書こうが勝手だが、ここはお前の職場じゃないぞ
298 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 07:41:24.76 ID:utv5/5Cv.net] >>286 BOM付きのファイルは一行目を空行にしている。 バッチに限らず後で色々トラブルあるから
299 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 23:56:34.27 ID:b/1HFBuK.net] >>284 > 「この言語や環境はどこまで想定しているのかを調べる」 それはかなり大変なので、
300 名前:Q、3回やってもうまくいかなかったら別の言語に乗り換えるという便法が別の解決策 [] [ここ壊れてます]
301 名前:デフォルトの名無しさん mailto:sage [2019/06/29(土) 01:27:00.86 ID:LLveF6E3.net] だから何?
302 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 08:37:48.34 ID:yoyjVAJo.net] Win10 v1903 メモ帳で新規作成したテキストがtypeで化ける もはやSJISは既定値ではない cmdは旧態依然
303 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 17:34:32.60 ID:9mSpzETW.net] まあ chcpすりゃいいだけだし
304 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 18:30:22.69 ID:wRHHZz1p.net] 日本語レイアウトが崩れるからだめ
305 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 21:43:07.98 ID:y34WtIiv.net] 以前は実行中のバッチファイルを編集保存、行を追加したり減らしたり、すると エラーになってたと思うんだけど、何かエラーにならなくなった? Windows10 1903 からの変更? たまたまなのかな?
306 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 21:57:41.98 ID:y34WtIiv.net] >>294 自己レスです すいません、気のせいでした、たまたま起きないように見えただけで 普通にエラーが起きました
307 名前:デフォルトの名無しさん mailto:sage [2019/07/05(金) 00:07:51.66 ID:BL7Y7b8G.net] 実行中の行やその直後の行を追加したり削ったりすれば、 同じ処理が繰り返しになったり、必要な処理がスキップされる形になって 挙動がおかしくなるな
308 名前:デフォルトの名無しさん mailto:sage [2019/07/05(金) 20:30:36.68 ID:Osj0+Img.net] バッチファイルスクリプトって働き方改革になるの?
309 名前:デフォルトの名無しさん mailto:sage [2019/07/05(金) 21:19:11.24 ID:zBRgAgd8.net] Powershellが10年経って育った今からバッチを学ぶ意義は薄い
310 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 08:00:17.95 ID:NPkITZNc.net] >>296 全部メモリーに読み込んでしまうとかファイルロック掛けるとかすれば良いのにね
311 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 08:01:28.83 ID:NPkITZNc.net] >>298 PowerShellは色々トリッキーなところあるからなぁ もう少し普通のスクリプト言語で良かったのに…
312 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 10:23:31.70 ID:OJAqpfME.net] >>299 インタープリターではなくなる
313 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 10:31:09.33 ID:SnF6bIfm.net] 働き方改革?
314 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 10:53:24.31 ID:NPkITZNc.net] >>301 意味わからん…
315 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 10:59:51.87 ID:OJAqpfME.net] >>303 そもインタープリターは行単位でのみ読み込み解釈実行する仕様。 行内容を変えても反映されないんじゃインタープリターにならない
316 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 11:04:50.99 ID:NPkITZNc.net] >>304 > そもインタープリターは行単位でのみ読み込み解釈実行する仕様。 逐次解釈は別にメモリーからでもいいだろ > 行内容を変えても反映されないんじゃインタープリターにならない そもそも行内容変えたらおかしくなるって話なんだがw
317 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 11:12:26.69 ID:OJAqpfME.net] >>305 1の行の処理が終わってから2の行を読み込み解釈するのがインタープリター メモリ先に読み込んだんじゃ意味ないの。 行内容変えてバグ混入させてバグったなら仕様通り
318 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 11:45:00.41 ID:ddaI9LPq.net] ディスクキャッシュなしだとクッソ遅いんだよな
319 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 11:54:17.26 ID:NPkITZNc.net] >>306 読み込み元がファイルかメモリーかなんて関係ないだろ 昔のBASICはインタープリターじゃねーのかよw > 行内容変えてバグ混入させてバグったなら仕様通り バカすぎる…
320 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 12:11:18.65 ID:OJAqpfME.net] 本来の仕様・特性を理解しておらず。 メモリに全部読み込んでファイルロックかけちゃえばとか どっちがアホなんだか >>296 のようなことをしなければいいだけ
321 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 12:13:38.81 ID:NPkITZNc.net] > メモリに全部読み込んでファイルロックかけちゃえばとか 日本語の理解力もないのかよ…
322 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 12:20:37.36 ID:OJAqpfME.net] 仕様通りの動作に「仕様を変えるべきだ」というなら「どうぞ、自分で制作しておやりなさい」としか ディスク上のプロフラムファイルを処理しろと指示しておいて、実行中にプログラムファイル弄る方がバカでしょ?
323 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 12:45:33.27 ID:SnF6bIfm.net] 横から失礼します。 例えば、バッチじゃないけど、 中間コード生成するのは、 インタプリタじゃないの?
324 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 12:53:22.08 ID:NPkITZNc.net] > ディスク上のプロフラムファイルを処理しろと指示しておいて、実行中にプログラムファイル弄る方がバカでしょ? うんうん、 > 行内容を変えても反映されないんじゃインタープリターにならない とか言ってたバカに言ってやれよww
325 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 13:25:39.62 ID:OJAqpfME.net] >>313 絶望的に頭悪いな 行内容を変えても反映されないんじゃインタープリターにならない 未実行の行内容をにバグ混入させればバグるのは仕様通り。インタープリタだから。 >>299 だと行内容変えても帰る前の動作を続けるかファイルが変えられなくなる。
326 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 13:31:06.82 ID:NPkITZNc.net] > 実行中にプログラムファイル弄る方がバカでしょ? なのに内容変えたら反映しろとか頭おかしいw もう自分が何を指摘されてるかもわかってないんだろうな
327 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 14:13:50.98 ID:OJAqpfME.net] 動作がバグらないように行内容をいじる方法もあるからなー バカには気づけないのかもな
328 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 14:26:59.31 ID:NPkITZNc.net] しれっと話し変えててウケる~w
329 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 14:27:43.94 ID:ZOT0kh7c.net] title Win8.1のcmdはPowershellを呼び出すとタイトルが変わってしまう timeout 5 powershell sleep 5 Powershellを呼び出してもタイトルが変化しない方法ありませんか?
330 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 15:18:42.27 ID:Mj6xLmMK.net] なんか色々とっちらかってるけど 入力に対して逐次実行を行い内容を出力するための実行エンジンがインタプリタ まとめて実行する方法がバッチ バッチを書くための言語の種類がスクリプト なのでインタプリタ上で動くスクリプトで記述されたバッチが多いのは事実だけど バッチスクリプトだからって必ずしもインタプリタ上で動作するわけではない あまり言われることはないけどC言語なんかも手順をまとめて記述するという 意味ではバッチ そのバッチを効率よく動かすためにハードウェアにネイティブなコードなどに 変換するのがコンパイラ なので>>312 が言うような中間コードを生成するのは処理的にはバッチのコンパイル C#がやJAVAが典型的だけどバッチとして書かれたスクリプトをコンパイラで 中間コードに変換して.netエンジンとかJAVAエンジンで動かすけど、これらの エンジンはインタプリタとして作成されているので直接コマンドを逐次実行する ことも出来るようになっている インタプリタが何を持って逐次実行の基準にしている(一般的にテキスト入力な インタプリタはキャリッジリターンだけど)かはインタプリタの実装しだいなので、 バッチの内容がバッチ実行中に書き換わった際に動作が変わる/変わらないって いうのは実行エンジンがインタプリタであるとかないとか言うのと関係ない Linuxのシェルスクリプトはshっていうインタプリタで動いてるけど、バッチ スクリプトは「'(バッククォート)」で囲まれた文字列はコマンドとして実行でき、 文字列は動的に書き換えできるのでバッチファイルを書き換えながらインタプリタで 実行できるバッチスクリプトって言うものも存在する 逆にC#みたいな中間コードを実行するインタプリタシステムは一般的にまとめて コードを読み込んで実行するので、実行中にファイルを書き換えても読み込まれた コードが変わるわけではないのでそのまま実行できる
331 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 15:32:56.64 ID:Es9FYwgG.net] バカの長文ウザい
332 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 16:47:17.04 ID:edODQM35.net] 理解できないときの一行レス乙
333 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 17:04:06.81 ID:l+THgL+v.net] >>321 多分、その通り。 >>320 は、自分以外みんなバカというセンスのかたなのでしょう。 (320著『自分以外みんなバカ』)
334 名前:312 mailto:sage [2019/07/06(土) 17:45:47.25 ID:SnF6bIfm.net] >>319 レスありがとうございました。
335 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 18:13:58.11 ID:yCp3HJnn.net] >>321-322 そりゃ、 > あまり言われることはないけどC言語なんかも手順をまとめて記述するという意味ではバッチ みたいなアホなことを言う奴を理解しろと言われてもなぁw
336 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 18:30:06.42 ID:edODQM35.net] アホとバカは意味がちゃうで
337 名前:デフォルトの名無しさん mailto:sage [2019/07/07(日) 00:42:47.20 ID:YVv/+K6C.net] 貴重なメモリをバッチなんかに使われたくない ましてやファイルハンド
338 名前: or FCBを消費するなんて考えたくもない [] [ここ壊れてます]
339 名前:デフォルトの名無しさん mailto:sage [2019/07/07(日) 17:57:51.72 ID:sK6+FwWI.net] 書いたスクリプトをそのままCMD画面に貼り付けて実行できるのが素晴らしすぎる これもインタープリタゆえのメリット
340 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 22:50:53.76 ID:2IS3Ei7C.net] 指定したURLをIEで開くバッチファイルを作りたいのですが、以下のいずれの書き方でもうまく起動しませんでした。 どのように記述すれば良いのでしょうか? start "" """C:\Program Files\internet explorer\iexplore.exe"" https://www.yahoo.co.jp/" start "" "'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/" start 'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/ cmd /c start "" """C:\Program Files\internet explorer\iexplore.exe"" https://www.yahoo.co.jp/" cmd /c start "" "'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/" cmd /c start 'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/
341 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 22:52:08.85 ID:2IS3Ei7C.net] ↑書き忘れましたが、IEを起動したらバッチファイル自体はすぐに終了して欲しいです。
342 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 22:58:10.74 ID:t7LU6uHU.net] これで普通に開けたけど start "" "C:\Program Files\internet explorer\iexplore.exe" "https://www.yahoo.co.jp/" exit
343 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 23:41:41.05 ID:2IS3Ei7C.net] >>330 助かりました。ありがとうございます><
344 名前:デフォルトの名無しさん mailto:sage [2019/07/22(月) 20:50:29.11 ID:64jFVFKi.net] 質問です chcp を設定後に日本語テキストファイルを type しても なぜか数行ごとに部分的に文字化けします 正しく表示させる方法はありますか ファイルをコード変換するしかないでしょうか 20932 (EUC-JP) 50220 (JIS) 65000 (UTF-7) 65001 (UTF-8)
345 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 00:29:27.63 ID:NmYCCAI2.net] 正常に表示できる部分もあるのか? コマンドプロンプトのフォント設定はレジストリをいじればできるようだが chcp したとしても 各コードに合わせた日本語フォントがないと思う ファイルをコード変換には nkf などを利用すればよい もちろんcp932に変換できない文字がありえる点には注意
346 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 01:19:58.32 ID:dqAnc0cb.net] 横から失礼。多分フォントの問題じゃないなあ。再現してみる。 @echo off del a.txt set "a=ああああああああああああああああああああああああああああああああああ" chcp 65001 for /l %%i in (1,1,10) do echo %a% >> a.txt start notepad a.txt type a.txt pause goto :eof
347 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 13:00:19.24 ID:dqAnc0cb.net] >>332 typeの代替えバッチ @echo off & set /a b=1 for /f "delims=:" %%i in ('type "%~1" ^| findstr /n /r /c:"^$"') do call :x %%i set /a a%b%=0,b=1,c=1 for /f delims^=^ eol^= %%i in ('type "%~1"') do call :y & echo.%%i goto :eof :x set /a a%b%=%1,b-=-1 & exit /b :y set /a d=a%b% set /a c-=-1 & if %c%==%d% echo.& set /a b-=-1 & goto y 動作文字コードは>>332 の4種類とcp932とBOM付UTF-16LE 内部コマンドのtypeの文字化けの原因は不明 得体の知れないバッチが嫌ならnkfでどうぞ
348 名前:332 mailto:sage [2019/07/23(火) 19:39:52.27 ID:3qcsVE62.net] みなさんレスありがとうございました >>335 のバッチを実行したら正しく表示されました なにか不具合があれば nkf で変換します
349 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 14:25:26.72 ID:KhkfuoHG.net] @ECHO OFF FOR /L %%I IN (1,1,3) DO ( :ラベルの次に空行だと死ぬようだ ECHO %%I ) PAUSE
350 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 23:40:50.69 ID:uv4O1i4q.net] >>337 FOR コマンドの中に単純にラベルを入れるとそうなる。 諦めろ。そういう腐った仕様だ。
351 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 07:12:05.83 ID:e+IGCa9q.net] MSはpowershell作っといてcmdも生殺しのまま
352 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 07:24:42.21 ID:i8+nUA9v.net] 後方互換レガシー用だから