1 名前:デフォルトの名無しさん mailto:sageteoff [2017/03/11(土) 13:47:11.66 ID:2LSSeyH1.net] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 前スレ 【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net echo.2ch.net/test/read.cgi/tech/1424858999/ それ以前の過去スレ %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/
331 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 21:17:45.06 ID:NAv6VFfd.net] >>317 wsfの手があったか、あとjsでもスクリプトエンコードで書けばなんとかなるね
332 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 16:23:41.90 ID:t3TbTPGI.net] powershellで似たような事はできませんか? 1ファイルにしたくて
333 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 16:32:17.66 ID:9pJBMU57.net] >>319 【最強CUI】PowerShell -Part 2 [無断転載禁止]©2ch.net https://mevius.5ch.net/test/read.cgi/tech/1480109402/
334 名前:デフォルトの名無しさん [2018/01/18(木) 18:41:19.43 ID:lAsosfYH.net] どうしても分からないので質問致します。 @echo off @rem バッチファイルのディレクトリに移動 cd /d %~d0%~p0 set USR_INPUT_STR1=https://www.openrec.tv/live/fKGMub0cd6j @rem 引数有無と引数名チェック if "%USR_INPUT_STR1%"=="" goto ERROR echo;%USR_INPUT_STR1%|findstr /R /C:"^http" /C:"openrec" >NUL||(echo "%1" を処理できません) && goto ERROR @rem URLのアドレスとHTMLを環境変数へ設定 set ADDR=%USR_INPUT_STR1% for %%I in (%USR_INPUT_STR1%) do set HTML=%%~nxI @rem HTMLダウンロード curl -L --max-redirs 10 -R -O %ADDR% if not %ERRORLEVEL%==0 goto ERROR @rem Shift-JISに文字コード変換 nkf -s --overwrite %HTML%
335 名前:デフォルトの名無しさん [2018/01/18(木) 18:41:39.14 ID:lAsosfYH.net] set TARGET=%TARGET:playlist=chunklist% @rem ffmpegで動画吸い出し ffmpeg -c copy "%TITLE%.ts" -i "%TARGET%" @rem 最後にcurlで出力したソースファイルを削除 @rem for /R %%f in (*.) do del /Q "%%f" pause exit :ERROR echo 引数が無効のため処理できませんでした pause exit このようなbatファイルを作ったのですが、どうしても最後に sourcefile=https://station303.openrec.tv/live1/667d4bef5cb4af8db6b9198cab7b3148e957e477/chunklist.m3u8: Invalid argument と無効な引数と言われてしまい動画の吸い出しが出来ません 完全に手詰まりなため、丸投げにはなってしまいますがご教授いただければと思います よろしくお願いします
336 名前:デフォルトの名無しさん mailto:sage [2018/01/18(木) 19:11:35.69 ID:r+5+UL4/.net] >>322 とりあえず最初の行を rem @echo off にしてどこでエラーになってのか確認しろ
337 名前:よ [] [ここ壊れてます]
338 名前:デフォルトの名無しさん mailto:sage [2018/01/18(木) 19:15:53.38 ID:pm/tv2ru.net] >>322 これ途中の処理抜けてない? TARGETにURLが入らないんだけど
339 名前:デフォルトの名無しさん mailto:sage [2018/01/18(木) 19:34:30.33 ID:pm/tv2ru.net] 170のやつを適当に書き直したら動いたよ for /F tokens^=2^ delims^=^" %%I in ('type %HTML%^|find /I "data-sourcefile"') do set "TARGET=%%~I"
340 名前:デフォルトの名無しさん [2018/01/18(木) 19:58:03.19 ID:lAsosfYH.net] >>322 の最初が抜けてました・・・ @rem HTMLから文字列抽出 for /F "tokens=2 delims=<>| " %%I in ('type %HTML%^|findstr /R /C:"<title>"') do set TITLE=%%~I for /F "tokens=* delims=data-file= " %%I in ('type %HTML%^|find /I "playlist.m3u8"') do set TARGET=%%~I
341 名前:デフォルトの名無しさん [2018/01/18(木) 20:06:19.33 ID:lAsosfYH.net] >>325 ありがとうございます・・・ エラーを見たのですが、なぜかsourcefile=が付いてしまっていました 何度もありがとうございます
342 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 01:16:37.30 ID:s5lQXlw3.net] echo abc 1>x1 1>x11 2>x2 3>x3 とするとDOS窓が応答しなくなった x11 x2 x3 ファイルができるが x1ファイルはできない
343 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 14:21:26.57 ID:e8Iu9+Yp.net] compフォルダ配下にはa,b,c,…ってフォルダがあって、 そのフォルダの中にはzipとrarの圧縮ファイルがある compopenってフォルダを作って、compの中のフォルダ階層は変えないで、compopenフォルダ内のaやb,cのフォルダにそれぞれすべて展開させたいときってどうするの? zipやrar毎にフォルダ作って展開させたい D:/ ├comp/ │ └ a/ │ └ 111.zip │ └ 222.zip │ └ b/ │ └ xx1.rar │ └ xx2.rar │ └ c/ │ └ ttt.zip │ └ rrr.rar D:/ ├compopen/ │ └ a/ │ └ 111/ │ └ 222/ │ └ b/ │ └ xx1/ │ └ xx2/ │ └ c/ │ └ ttt/ │ └ rrr/
344 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 15:15:09.99 ID:LZ9wDs2K.net] >>329 >>12-19 の方法で相対パスを取得すれば出来ると思うよ
345 名前:デフォルトの名無しさん mailto:sage [2018/01/29(月) 16:22:04.20 ID:LZ9wDs2K.net] 自分用に書いたbatを流用してみた 多分こんな感じで動くはず https://pastebin.com/zEpvpdCa
346 名前:デフォルトの名無しさん mailto:sage [2018/01/30(火) 00:28:24.66 ID:fZrZLUfh.net] >>329 set "a=D:\comp" & set "b=D:\compopen" setlocal enabledelayedexpansion for /L %%i in (4,1,1000) do if "!a:~%%i,1!"=="" set "c=%%i" & goto x :x endlocal & set "c=%c%" for /r "%a%" %%i in (*.zip *.rar) do set "d=%%~dpni" & set "e=%%~i" & call :y goto :eof :y setlocal enabledelayedexpansion 7z x -o"!b!!d:~%c%!" "!e!"
347 名前:330 mailto:sage [2018/01/30(火) 04:04:55.14 ID:I+jPXl6+.net] >>332 なるほど 自分のは冗長に書きすぎてたね
348 名前:デフォルトの名無しさん mailto:sage [2018/01/30(火) 16:28:50.07 ID:/nodnUUg.net] >>329 使い回しあんまり考えなければ -------- ここから set path=C:\Program Files\7-Zip;%path% cd /d D:\comp for /f "usebackq delims=" %%i in (`dir /ad /s /b`) do ( echo,"%%~i" set "tmppath0=%%~i" call set "tmppath1=D:\compopen%%tmppath0:~7%%" pushd "%%~i" call 7z.exe x *.* -spe -bso0 -o"%%tmppath1%%\*" 2>>D:\compopen\errlog.txt popd ) -------- ここまで マズいフォルダ(パス)名が無いことを前提に、もろもろ 7-Zip に良きにはからってもらう
349 名前:デフォルトの名無しさん [2018/01/30(火) 17:10:39.08 ID:25OUwAYA.net] >>332 >>334 ありがとうございます! 150GBくらいあるから、まだ展開し終えてないけど、 動き出しました。 実際のcompの中のa,b,c,・・・フォルダの中のzipやrarの名前は、 今のところ、下記みたいにフォルダの文字列含んでて、階層を上にしてもよかったかなと思いつつ、
350 名前:例外も出てくるかもしれないので、このまま走らせてみます。 しっかり解凍しだしてフォルダ生成してくれてます。 D:/ ├comp/ │ └ a/ │ └ a111.zip │ └ a222.zip │ └ b/ │ └ xx1b.rar │ └ xx2b.rar │ └ c/ │ └ cttt.zip │ └ crrr.rar [] [ここ壊れてます]
351 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 00:35:03.40 ID:ah9e2u9N.net] そもそも、そんな複雑な手続きには、PowerShell, Ruby などを使えw
352 名前:デフォルトの名無しさん mailto:sage [2018/02/03(土) 09:54:54.05 ID:y+J4EMEq.net] コマンドプロンプトの仕様についてだけど、遅延展開ってデフォでONじゃダメだったのかな? あれ打ち込むのマンドクサ('A`)
353 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 04:53:11.12 ID:j3KUW6ez.net] 1.test.exeという実行ファイルがある。 2.test.exeのフルパスは必要に応じて「test.exeをShift+右クリック」→「パスをコピー」して変数testExeに格納してもらう。 このフルパスには"D:\a bc\test.exe"のように空白が含まれることがあるとする。 3.FOR文でこのtest.exeを--helpオプションつきで実行し、結果からfindstr&setしたい。 ---作成バッチ--- @echo off cd /d %~dp0 set testExe="D:\a bc\test.exe" FOR /F "tokens=3" %%a IN ('%testExe% --help ^| findstr "TargetStr"') DO ( set kekka=%%a ) @echo %kekka% pause ---実行結果--- 'D:\a' は、内部コマンドまたは外部コマン ド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ---解1--- testExeを設定する際、全体をダブルクォートで囲むのではなく、 空白を含むフォルダだけをダブルクォートで囲むようにする。 set testExe=D:\"a bc"\test.exe 解1はtestExeの設定が地味に面倒になってしまうので回避したいのですが、何か良い方法はないでしょうか?
354 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 05:04:15.80 ID:j3KUW6ez.net] >>338 追記 パスに空白を含む場合も問題ですが、 set testExe="D:\abc\test.exe" のように空白を含まない場合には ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 と言われてエラーになるので、それも含めてなんとかしたいという点を書き忘れていました。 「FOR文でフルパスでコマンドを実行したい場合、どうすればよいのでしょう」というのが根本的な質問です。
355 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 05:55:25.28 ID:j3KUW6ez.net] すみません。>>338-339 ですが、直接フルパスで実行するのではなくフォルダに移動して実行することで一応解決しました。 --- @echo off cd /d %~dp0 set testExe="D:\a bc\test.exe" FOR /F "tokens=1 delims=" %%I IN (%testExe%) DO ( IF "%%~nxI"=="test.exe" ( pushd "%%~dpI" FOR /F "tokens=3" %%M IN ('.\%%~nxI --help ^| findstr "TargetStr"') DO ( set kekka=%%M ) popd ) ) @echo %kekka% pause --- 問題点や、もっとスマートな方法があれば、教えていただけると助かります。
356 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 08:19:13.38 ID:ETXmgzVd.net] >>338 @echo off cd /d %~dp0 set testExe="D:\a bc\test.exe" for /f "tokens=3" %%a in ('start /wait /b "" %testExe% --help ^| findstr "TargetStr"') DO ( set kekka=%%a ) @echo %kekka% pause
357 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 08:24:05.58 ID:chwOG0ZE.net] >>338 自分もこの問題に直面して同じ解決策とったんだけどこれって何が原因でこうなるの?
358 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 10:47:37.64 ID:ETXmgzVd.net] こっちのがいいかも 前に似たようなネタがあったような set testExe="D:\a bc\test.exe" for /f "tokens=3" %%a in ('cmd /s /c "%testExe% --help | findstr "TargetStr""') do (
359 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 11:16:40.07 ID:j3KUW6ez.net] >>341 できました!なるほど、startを使えばよかったのですね・・・。ありがとうございます。 >>342 なんなんでしょうね。仕組みがよくわからないです・・・。どなたか解説を・・・。
360 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 11:23:08.71 ID:ETXmgzVd.net] やっぱり >>343 の cmd はダメだな testExe や TargetStr の中のスペースがデリミタ扱いされる スペースが2個以上続くと誤動作する >>341 の start がいい
361 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 11:37:48.40 ID:j3KUW6ez.net] >>343 >>345 重ねてありがとうございます。 cmdの場合は以下でうまくいくようです
362 名前:。 set testExe="D:\a bc\test.exe" FOR /F "tokens=3" %%a IN ('cmd /c %testExe% --help ^| findstr "TargetStr"') DO ( [] [ここ壊れてます]
363 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 13:08:35.91 ID:Emu9UBTE.net] 括弧の中の最初と最後の引用符が削除される?
364 名前:デフォルトの名無しさん mailto:sage [2018/02/05(月) 14:11:13.29 ID:ETXmgzVd.net] やっと思い出したぞ裏技w 前後の端にダミーの二重引用符 ^" を付けるんだった >>347 のおかげで思い出したぜ set testExe="D:\a bc\test.exe" for /f "tokens=3" %%a in ('^"%testexe% --help ^| findstr "targetstr"^"') do (
365 名前:デフォルトの名無しさん mailto:sage [2018/02/06(火) 13:18:25.70 ID:m2OYikdE.net] >>347-348 できました。なるほど、そういう解釈がされるんですね・・・。 バッチってほんと思わぬところでひっかかりますよね。とても勉強になりました。ありがとうございます。
366 名前:デフォルトの名無しさん [2018/02/07(水) 10:59:47.18 ID:fDqCQtuz.net] VBでプログラムを作っているのですが、行き詰ってしまったので質問させていただきます。 バッチでiniファイルを読み込み、iniから取得したデータを格納した変数をVBのソース内で使いたいのですが可能ですか? exe形式での納品となるのでiniファイルの読み込みはどうしてもバッチ内で行いたいのです。 ちなみに処理の流れとしては、iniファイル読み込み→exeファイル実行となっています。 どなたかご教授ください。よろしくお願いいたします。
367 名前:デフォルトの名無しさん mailto:sage [2018/02/07(水) 11:12:08.68 ID:fDqCQtuz.net] 申し訳ございません。 バッチでiniファイルを読み込み、iniから取得したデータを 格納した変数をVBのソース内で使いたいのですが可能ですか? × VBのソース内の変数に格納したいのですが可能ですか? ○ でした。
368 名前:デフォルトの名無しさん mailto:sage [2018/02/07(水) 11:43:25.21 ID:LQaGrglb.net] バッチで、ini ファイルを読み込み、必要な値を取り出して、 それらを引数にして、exe を起動する そして、exe 内では、引数から読み込んだ値を使う
369 名前:デフォルトの名無しさん [2018/02/07(水) 12:00:38.62 ID:fDqCQtuz.net] >>352 どう調べたらいいか分からず困っていたのですが、引数の取得で検索すればなんとかなりそうですね。 後は自分で調べてやってみます。ありがとうございました。
370 名前:デフォルトの名無しさん mailto:sage [2018/02/07(水) 16:46:31.34 ID:EyPJd6fI.net] バッチだと for文を使います 複雑なことをするのであればVBで直接読み込む方法もあります
371 名前:デフォルトの名無しさん mailto:sage [2018/02/10(土) 12:18:28.89 ID:/lSv2IRR.net] バッチでiniファイルなんて読み込めるの? VBとかからGetPrivateProfileStringとかのAPIを使うんじゃないの? まあ力技で出来ないことはないんだろうけど自分が知らないだけで一般的なやり方というのがあるのかな?
372 名前:デフォルトの名無しさん mailto:sage [2018/02/10(土) 15:32:33.27 ID:K6TfvilX.net] ググればふつうに出てくるようだが。(内容まではちゃんと見てない)
373 名前:デフォルトの名無しさん mailto:sage [2018/02/10(土) 16:29:19.90 ID:Sj+J5yD3.net] >>355 >>354 の言うようにfor文を使う わかりやすいとは言えないし特殊文字が含まれると色々面倒なのでおすすめはしない
374 名前:デフォルトの名無しさん mailto:sage [2018/02/11(日) 19:16:43.96 ID:l1W9SMIH.net] バッチファイルでファイル操作って一見ちゃんと動いてるように見えて穴だらけって場合が多いからやりたくないな wshで実装したりps辺りで既存のAPI呼び出す方がいい
375 名前:デフォルトの名無しさん mailto:sage [2018/02/11(日) 19:44:19.46 ID:+WWL4Di4.net] batで設定呼び出したい時はiniじゃなくてsetting.batに変数を直接記述してcallしてるわ このやり方も良いやり方なのかどうか分からんけど
376 名前:デフォルトの名無しさん mailto:sage [2018/02/12(月) 12:02:40.25 ID:OYWjTvif.net] ascii.jp/elem/000/001/630/1630041/ Windows 10 RS4に追加された「curl」と「tar」コマンド って curl と tar が追加されるんだ PowerShell にも curl コマンド(エイリアス)があってややこしさが増すな でも、標準で使えるようになるのはバッチファイル使ってる身とすれば 嬉しくはある
377 名前:デフォルトの名無しさん mailto:sage [2018/02/12(月) 15:53:42.90 ID:BbO5lIMB.net] もうRS4か RS3の不具合なんとかしてくれよ
378 名前:デフォルトの名無しさん [2018/02/18(日) 16:07:03.48 ID:OqSvNe2j.net] ファイル圧縮バッチを hta の画面にドロップするだけで実行するやつ作った https://medaka.5ch.net/test/read.cgi/csaloon/1518353191/843-846 ファイルをバッチファイルにドロップして引数受け取りは普通にあるけど ファイル名の一部を文字列としてドロップしても起動されないのでこういう方法を取った。
379 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 16:25:37.39 ID:ZqWPhgUg.net] >>360 Windows10 なら、WSL で、MS Store から、Ubuntu 16.04 LTS をダウンロードすれば、 curl, tar も入っている 他のLinux のコマンドも、一杯ある
380 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 19:16:35.61 ID:yvQzNzLN.net] >>363 それはバッチから使えるの?
381 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 19:20:27.56 ID:F2O3xW/S.net] 普通に使える ubuntu run curl --help
382 名前:デフォルトの名無しさん mailto:sage [2018/02/19(月) 04:53:30.17 ID:xIEc0S27.net] Linux(Ubuntu)側のbash、Windows側のPowerShell・コマンドプロンプトから、 相互のアプリ・コマンドを実行できる 相互のパイプも、つなげられる つまり、Linux側のbashは、Windows10 の1つのアプリになっている
383 名前:デフォルトの名無しさん mailto:sage [2018/02/19(月) 08:14:36.88 ID:2cNNs3G6.net] > Ubuntu 16.04 LTS をダウンロードすれば、 この手の前提条件が無いことがバッチのメリットなのに...
384 名前:デフォルトの名無しさん mailto:sage [2018/02/19(月) 22:58:00.92 ID:oh22XJYs.net] >>363 Web開発テスト用の範囲を超えてない。 当のMSが「運用には使ってくれるな」つってるのによ。 お前馬鹿か?馬鹿だろ。
385 名前:デフォルトの名無しさん mailto:sage [2018/02/19(月) 23:41:31.81 ID:9tX9GnHd.net] なんでこの人「運用」とか言い出してんの?
386 名前:デフォルトの名無しさん mailto:sage [2018/02/19(月) 23:44:41.90 ID:uhfYTKrf.net] >>368 WSLはウェブサービス開発で使って、 実際にそのウェブサービスを動かす(=運用)するのは ネイティブなLinuxの上だぞ。例えばAzure上のLinuxとか 運用に使ってくれるなっていうのは、WSL上でウェブサービスを動かして 実際に不特定の人にサービスを提供するなっていう意味だ
387 名前:デフォルトの名無しさん [2018/02/20(火) 00:06:58.45 ID:amqSspGZ.net] WSL 上で、Webサーバーとかを常時接続させて運用できない まあ最初から、自分のデスクトップPC を外部につなげて、 そんなサービスをする奴は、居ないだろ
388 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 00:08:38.09 ID:ZtM0s1po.net] バッチで使うのは運用ではないと?
389 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 00:13:22.58 ID:XC4KsyV/.net] >>370 端末のスタートアップスクリプトに使うのも用途外。 だから「使える」とか言うのは明らかに言い過ぎ。 お前馬鹿か?馬鹿だろ。
390 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 00:40:00.47 ID:wdwe47Ke.net] >>373 > 端末のスタートアップスクリプトに使うのも用途外。 端末のスタートアップスクリプトの話なんかしてないんだが、 何を言い出してるんだ? そもそも端末のスタートアップスクリプトの 意味わからねぇw >>372 運用っていうから悪いんだよ。 「一般ユーザーに対してのウェブサービスの提供」 MSが使うなって言ってるのはこれだけだよ
391 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 00:43:54.06 ID:wdwe47Ke.net] うん、ちゃんとFAQに書いてあったね https://docs.microsoft.com/en-us/windows/wsl/faq > Also, even though you will be able to run many popular server applications (e.g. Redis), > we do not recommend WSL for server scenarios ? Microsoft offers a > variety of solutions for running production Ubuntu workloads in Azure, Hyper-V, and Docker. サーバーアプリケーションを実行できるが、サーバーとしてのシナリオは推奨してないと
392 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 00:46:37.66 ID:wdwe47Ke.net] もう一つ、誰のためのものですか?という質問には
393 名前: > Who is this for? > This is primarily a tool for developers -- > especially web developers and those who work on or with open source projects. 第一に開発者、特にウェブ開発者やオープンソースプロジェクトを行ってる人 > This allows those who want/need to use Bash, common Linux tools (sed, awk, etc.) and > many Linux-first tools (Ruby, Python, etc.) to use their toolchain on Windows. bashや多くのLinuxツールや言語を使いたい人のためのものと [] [ここ壊れてます]
394 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 00:57:48.56 ID:amqSspGZ.net] Windows のコマンドプロンプトから、 wsl bash -c "echo 'hello'" 出力結果 : hello これぐらいのLinux の起動・実行・終了は、1秒! 定時処理ぐらい楽勝 サーバーみたいに常時実行しなければ大丈夫
395 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 01:27:38.14 ID:wdwe47Ke.net] >>377 wsl.exeを使うなら bash -c はいらないぞ wsl echo hello でよい wsl echo --help と wsl /bin/echo --help の実行結果が違うから wslの中ではbash上で動いているっぽい wsl ps axfu やってもbashいないんだけどな まあ詳しい人に聞けば、そこら辺の動きは知ってるだろう。 あと、別にLinuxは起動してるわけじゃないのでLinuxの起動と書かれると違和感がある。 WSLはLinuxカーネルを模したサブシステム
396 名前:377 mailto:sage [2018/02/20(火) 01:41:53.13 ID:amqSspGZ.net] Windows のコマンドプロンプトで、 >where wsl C:\Windows\System32\wsl.exe >where ubuntu C:\Users\ユーザー名\AppData\Local\Microsoft\WindowsApps\ubuntu.exe wsl, ubuntu(Linux), bash の関係がよくわからない 漏れのノートPC は、i3、メモリ8GB、SSD だけど、 Windows10 の単なるアプリだから、起動・実行・終了で、1秒ほど WSLは、もう正規版だし、単なるアプリとして使う分には、問題ないだろ
397 名前:377 mailto:sage [2018/02/20(火) 01:44:26.24 ID:amqSspGZ.net] 書き忘れた Windows のコマンドプロンプトで、 >where bash C:\Windows\System32\bash.exe
398 名前:377 mailto:sage [2018/02/20(火) 01:53:46.64 ID:amqSspGZ.net] Windows のコマンドプロンプトで、 >wsl echo hello >ubuntu -c "echo hello" >bash -c "echo hello" これらは皆、hello が出力されるけど、書き方が異なる wsl では、echo がサブコマンドになっているのかも
399 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 01:58:14.32 ID:wdwe47Ke.net] >>379 俺もちゃんと調べたわけじゃないけど、 開発の歴史からすると、 最初はbash on ubuntu on windowsという扱いで bash.exeでUbuntu上のbashが起動できる(おまけでLinuxコマンドも使えるよ!)という扱いだった。 このbashが起動できるという仕組みを提供しているものの名前がWindows Subsystem for Linuxだったわけだが 開発が継続しLinuxカーネルとの互換性があがってもうbashだけが起動するもんじゃないよねってことで Windows Subsystem for Linuxの略であるwslと呼ばれるようになり。 wsl.exeができた(おそらくbash -c "コマンド" と面倒な書き方をしなくて良いラッパー) それと前後して、ubuntuだけじゃなくopenSUSEやFedoraも動くよ!(いやFedoraまだリリースされてないんだが) ということになり、bash.exeやwsl.exeで起動するのはどっちのディストリよ? ってことでそれを切り替えることができるwslconfig.exeができた。 また直接wslconfig.exeの設定によらず、ubuntuやopensuseを直接起動するための ubuntu.exe やopensuse-42.exe が出来た。 こんな所だと思う
400 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 02:00:13.61 ID:ZtM0s1po.net] なんでバッチスレでパソコン博士がWSLでイキってるの?
401 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 02:01:02.04 ID:wdwe47Ke.net] >>381 ubuntu /?をするとわかるが、 ubuntu run echo helloが正しい ubuntu.exeもwsl.exeもbash.exeもパラメータの扱いが違うだけで ディストリ上のbashを実行していることは確かなようだ
402 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 02:01:43.71 ID:wdwe47Ke.net] >>383 Windows 10において、バッチファイルでWSLと連携するのは 当たり前の話になってきているから
403 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 02:04:18.90 ID:wdwe47Ke.net] ubuntuは Usage: <no args> - Launches the distro's default behavior. By default, this launches your default shell. と書いてあるから、bashじゃなくてデフォルトシェルが呼び出されるのかも。 うーん、どれを使うのが良い(汎用的)なのだろう?
404 名前:377 mailto:sage [2018/02/20(火) 02:51:43.01 ID:amqSspGZ.net] wsl(Linux のbash)・PowerShell・コマンドプロンプトの3つが、 パイプでもつなげられるし、シームレスになってきて、CUI が統合されてきているから、 個別の話よりも、3つのCUI をパイプでどうつなげるかの方に、 話の焦点が移ってきている
405 名前:377 mailto:sage [2018/02/20(火) 03:10:41.01 ID:amqSspGZ.net] bash は、C:\Windows\System32\bash.exe を起動する ubuntu は、bash, zsh など、自分がデフォルトに設定した、シェルを起動する。 環境変数、$SHELL >wsl echo $SHELL /bin/bash wsl コマンドが、ubuntu, open suse など、 自分がデフォルトに設定した、Linux を起動 >wslconfig /list Windows Subsystem for Linux ディストリビューション: Ubuntu (既定) 推測で書いたけど、普段は、wsl を使うと良いかも
406 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 06:46:25.63 ID:+0IlbXev.net] >>383 オモチャ買ってもらった子供が「見て見てこれすごいんだよー」って言ってるような感じ 暖かく見守ってやれ
407 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 12:42:35.46 ID:ZtM0s1po.net] >>389 WSL出た頃なら仕方が無いが... やっぱパソコン博士レベルだと今頃になってやっとおもちゃを見つける感じなのか。
408 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 19:54:28.42 ID:+0IlbXev.net] へへーん、ぼくなんてまえからもってるもんねー それはすごいねー w
409 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 21:48:42.53 ID:BI5N21qv.net] さすがにスレチだからもうやめとけと思うけど、WSLについて少し調べてみようと思うきっかけにはなったわ。
410 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 22:56:06.68 ID:wdwe47Ke.net] パソコン先生に恨みでもあるのかな? そんな話をしてもバッチファイルを書く上で 何の意味もないと思うんだが、話をしたいのだろうね
411 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 23:00:35.05 ID:wdwe47Ke.net] >>390 Bash on Ubuntu on Windowsは、早く使いたかったんで Inside Previewに変えてまで使ったよ。 GUIアプリには対応していないって書いてあったが仕組み上 GUIアプリ動くんじゃね?ってそこの頃はまだ情報が少なかったけど 実際に自分で試してxeyes は動いたーって2ちゃんねるに書いた記憶がある
412 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 23:11:12.21 ID:BI5N21qv.net] 自分語りとか余計なことをダラダラ書き連ねるから嫌われるんだよ。
413 名前:デフォルトの名無しさん mailto:sage [2018/02/20(火) 23:20:45.61 ID:wdwe47Ke.net] 嫌うのは相手の問題だからどうしようもない 俺に対する勘違いは、俺の問題だから解決する必要がある
414 名前:デフォルトの名無しさん mailto:sage [2018/02/21(水) 02:19:50.48 ID:PXpce9sQ.net] パソコン先生、怒りの連投きたー
415 名前:デフォルトの名無しさん mailto:sage [2018/02/21(水) 02:50:21.44 ID:1KGQWp4x.net] 連続してね〜じゃんw
416 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 16:07:21.04 ID:97AlcoLv.net] 例えば「aaa」という名前のODBCの設定は以下のコマンド reg query HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\aaa を実行すると HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\aaa Driver REG_SZ C:\WINDOWS\system32\SQLSRV32.dll Server REG_SZ aaa Database REG_SZ aaaDB LastUser REG_SZ ***** Trusted_Connection REG_SZ Yes のように表示できますが この設定の接続先データベース(上記
417 名前:ではaaaDB)をコマンドで変更することは出来るのでしょうか? [] [ここ壊れてます]
418 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 17:44:24.52 ID:f0GbsyKa.net] reg add HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\aaa /v Server /t REG_SZ /d bbbDB とかでだめなん
419 名前:399 mailto:sage [2018/02/25(日) 19:41:52.11 ID:97AlcoLv.net] >>400 「/v Server」は「/v Database」の間違いですよね? これでバッチリいけました。ありがとうございます!
420 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 10:04:11.85 ID:xTKxXp1v.net] windows10 のコマンドプロンプトの、文字色を変えるエスケープシーケンスで、 prompt ^[[1;36m[$d$s$t$h$h$h] ^[[1;33m%USERNAME% ^[[37m$p$_$g$s prompt $e[1;36m[$d$s$t$h$h$h] $e[1;33m%COMPUTERNAME% $e[37m$p$_$g$s echo ^[[1;36mバッチファイル^[[37m は動作しますが echo $e[1;36mスクリプト$e[37m だと駄目でず。 ( ^[ は、CTRL+[ で入力する制御文字(\x1B)) echo で有効な「$e」の様な入力方法は有りますか?
421 名前:402 mailto:sage [2018/02/28(水) 10:18:01.40 ID:xTKxXp1v.net] >>402 自己解決しました
422 名前:デフォルトの名無しさん [2018/03/16(金) 22:05:15.90 ID:HEHaQcsS.net] バッチファイルで 空行を除く最終行にhogeって文字がなかったら追加して改行 -- hogeとかになってたら削除してhoge追記して改行 って事をやりたいんですけどどうやったらできるかおせーてください
423 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 05:37:29.93 ID:nxO/ldT7.net] 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 }
424 名前:デフォルトの名無しさん [2018/03/17(土) 12:51:31.78 ID:HNxDhnRb.net] >>405 あのーバッチって聞いてるのにrubyのスクリプト出されても困るんですけど
425 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 13:17:48.14 ID:FI/uI0vX.net] やらなくても言い余計なことをして場を混乱させる人って必ずいるよね
426 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 13:29:47.44 ID:Y0/A+N6A.net] ルビ厨の相手するなよ...
427 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 13:33:32.46 ID:T/uji2Bj.net] ロジック真似すればいいだけじゃん 作ってくれじゃなくて教えてくれなんだから Lispで回答されて読めないのは理解できるが 上のRubyくらいなら何の問題もないだろ
428 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 15:03:38.07 ID:RY7g5/8I.net] 聞かれてるのはバッチでの実現手段なのにロジックとか言い出してどうすんだよ
429 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 15:06:43.59 ID:9hc/1qQU.net] 文字列の比較も削除も面倒だから バッチではやらないほうがいい
430 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 17:30:52.69 ID:4x6FsbbS.net] vbscript版作ったけどバッチ限定なら貼らなくいい?
431 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 18:08:03.98 ID:RY7g5/8I.net] >>404 一応無理矢理ここまで作ってみたけど、ファイルの中身や指定文字列に特殊文字が入ってると 容赦なくコケるという地獄仕様のままなんで、限定的にしか使えないと思う。 有意な最終行の内容にあわせて結果ファイルを出力するバッチ https://pastebin.com/mh9BZDCv コケないようにやるにはどうすればいいのかな・・・。誰かうまいやり方があれば教えてくれ。