【.cmd】 バッチファイルスクリプト %13 【.bat】

■ このスレッドは過去ログ倉庫に格納されています
2018/11/21(水) 14:52:07.84ID:v84I4o+L
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。

※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1424858999/
【.cmd】 バッチファイルスクリプト %12 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1489207631/

それ以前の過去スレ
%10 http://peace.2ch.net/test/read.cgi/tech/1374205515/
%9  http://toro.2ch.net/test/read.cgi/tech/1335015478/
%8  http://toro.2ch.net/test/read.cgi/tech/1315844420/
%7  http://hibari.2ch.net/test/read.cgi/tech/1298873550/
%6  http://hibari.2ch.net/test/read.cgi/tech/1277465356/
%5  http://pc12.2ch.net/test/read.cgi/tech/1242268171/
%4  http://pc12.2ch.net/test/read.cgi/tech/1229955189/
%3  http://pc11.2ch.net/test/read.cgi/tech/1217860043/
%2  http://pc12.2ch.net/test/read.cgi/tech/1197881068/
%1  http://pc11.2ch.net/test/read.cgi/tech/1178281991/
2019/07/06(土) 10:31:09.33ID:SnF6bIfm
働き方改革?
2019/07/06(土) 10:53:24.31ID:NPkITZNc
>>301
意味わからん…
2019/07/06(土) 10:59:51.87ID:OJAqpfME
>>303
そもインタープリターは行単位でのみ読み込み解釈実行する仕様。

行内容を変えても反映されないんじゃインタープリターにならない
2019/07/06(土) 11:04:50.99ID:NPkITZNc
>>304
> そもインタープリターは行単位でのみ読み込み解釈実行する仕様。
逐次解釈は別にメモリーからでもいいだろ

> 行内容を変えても反映されないんじゃインタープリターにならない
そもそも行内容変えたらおかしくなるって話なんだがw
2019/07/06(土) 11:12:26.69ID:OJAqpfME
>>305
1の行の処理が終わってから2の行を読み込み解釈するのがインタープリター
メモリ先に読み込んだんじゃ意味ないの。
行内容変えてバグ混入させてバグったなら仕様通り
2019/07/06(土) 11:45:00.41ID:ddaI9LPq
ディスクキャッシュなしだとクッソ遅いんだよな
2019/07/06(土) 11:54:17.26ID:NPkITZNc
>>306
読み込み元がファイルかメモリーかなんて関係ないだろ
昔のBASICはインタープリターじゃねーのかよw

> 行内容変えてバグ混入させてバグったなら仕様通り
バカすぎる…
2019/07/06(土) 12:11:18.65ID:OJAqpfME
本来の仕様・特性を理解しておらず。
メモリに全部読み込んでファイルロックかけちゃえばとか
どっちがアホなんだか
>>296 のようなことをしなければいいだけ
2019/07/06(土) 12:13:38.81ID:NPkITZNc
> メモリに全部読み込んでファイルロックかけちゃえばとか
日本語の理解力もないのかよ…
2019/07/06(土) 12:20:37.36ID:OJAqpfME
仕様通りの動作に「仕様を変えるべきだ」というなら「どうぞ、自分で制作しておやりなさい」としか
ディスク上のプロフラムファイルを処理しろと指示しておいて、実行中にプログラムファイル弄る方がバカでしょ?
2019/07/06(土) 12:45:33.27ID:SnF6bIfm
横から失礼します。
例えば、バッチじゃないけど、
中間コード生成するのは、
インタプリタじゃないの?
2019/07/06(土) 12:53:22.08ID:NPkITZNc
> ディスク上のプロフラムファイルを処理しろと指示しておいて、実行中にプログラムファイル弄る方がバカでしょ?
うんうん、
> 行内容を変えても反映されないんじゃインタープリターにならない
とか言ってたバカに言ってやれよww
2019/07/06(土) 13:25:39.62ID:OJAqpfME
>>313
絶望的に頭悪いな
行内容を変えても反映されないんじゃインタープリターにならない
未実行の行内容をにバグ混入させればバグるのは仕様通り。インタープリタだから。
>>299だと行内容変えても帰る前の動作を続けるかファイルが変えられなくなる。
2019/07/06(土) 13:31:06.82ID:NPkITZNc
> 実行中にプログラムファイル弄る方がバカでしょ?
なのに内容変えたら反映しろとか頭おかしいw
もう自分が何を指摘されてるかもわかってないんだろうな
2019/07/06(土) 14:13:50.98ID:OJAqpfME
動作がバグらないように行内容をいじる方法もあるからなー
バカには気づけないのかもな
2019/07/06(土) 14:26:59.31ID:NPkITZNc
しれっと話し変えててウケる~w
2019/07/06(土) 14:27:43.94ID:ZOT0kh7c
title Win8.1のcmdはPowershellを呼び出すとタイトルが変わってしまう
timeout 5
powershell sleep 5

Powershellを呼び出してもタイトルが変化しない方法ありませんか?
2019/07/06(土) 15:18:42.27ID:Mj6xLmMK
なんか色々とっちらかってるけど

入力に対して逐次実行を行い内容を出力するための実行エンジンがインタプリタ
まとめて実行する方法がバッチ
バッチを書くための言語の種類がスクリプト
なのでインタプリタ上で動くスクリプトで記述されたバッチが多いのは事実だけど
バッチスクリプトだからって必ずしもインタプリタ上で動作するわけではない

あまり言われることはないけどC言語なんかも手順をまとめて記述するという
意味ではバッチ
そのバッチを効率よく動かすためにハードウェアにネイティブなコードなどに
変換するのがコンパイラ

なので>>312が言うような中間コードを生成するのは処理的にはバッチのコンパイル
C#がやJAVAが典型的だけどバッチとして書かれたスクリプトをコンパイラで
中間コードに変換して.netエンジンとかJAVAエンジンで動かすけど、これらの
エンジンはインタプリタとして作成されているので直接コマンドを逐次実行する
ことも出来るようになっている

インタプリタが何を持って逐次実行の基準にしている(一般的にテキスト入力な
インタプリタはキャリッジリターンだけど)かはインタプリタの実装しだいなので、
バッチの内容がバッチ実行中に書き換わった際に動作が変わる/変わらないって
いうのは実行エンジンがインタプリタであるとかないとか言うのと関係ない

Linuxのシェルスクリプトはshっていうインタプリタで動いてるけど、バッチ
スクリプトは「'(バッククォート)」で囲まれた文字列はコマンドとして実行でき、
文字列は動的に書き換えできるのでバッチファイルを書き換えながらインタプリタで
実行できるバッチスクリプトって言うものも存在する

逆にC#みたいな中間コードを実行するインタプリタシステムは一般的にまとめて
コードを読み込んで実行するので、実行中にファイルを書き換えても読み込まれた
コードが変わるわけではないのでそのまま実行できる
2019/07/06(土) 15:32:56.64ID:Es9FYwgG
バカの長文ウザい
2019/07/06(土) 16:47:17.04ID:edODQM35
理解できないときの一行レス乙
2019/07/06(土) 17:04:06.81ID:l+THgL+v
>>321
多分、その通り。
>>320は、自分以外みんなバカというセンスのかたなのでしょう。
 (320著『自分以外みんなバカ』)
323312
垢版 |
2019/07/06(土) 17:45:47.25ID:SnF6bIfm
>>319
レスありがとうございました。
2019/07/06(土) 18:13:58.11ID:yCp3HJnn
>>321-322
そりゃ、
> あまり言われることはないけどC言語なんかも手順をまとめて記述するという意味ではバッチ
みたいなアホなことを言う奴を理解しろと言われてもなぁw
2019/07/06(土) 18:30:06.42ID:edODQM35
アホとバカは意味がちゃうで
2019/07/07(日) 00:42:47.20ID:YVv/+K6C
貴重なメモリをバッチなんかに使われたくない
ましてやファイルハンドル or FCBを消費するなんて考えたくもない
2019/07/07(日) 17:57:51.72ID:sK6+FwWI
書いたスクリプトをそのままCMD画面に貼り付けて実行できるのが素晴らしすぎる
これもインタープリタゆえのメリット
2019/07/17(水) 22:50:53.76ID:2IS3Ei7C
指定した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/
2019/07/17(水) 22:52:08.85ID:2IS3Ei7C
↑書き忘れましたが、IEを起動したらバッチファイル自体はすぐに終了して欲しいです。
2019/07/17(水) 22:58:10.74ID:t7LU6uHU
これで普通に開けたけど

start "" "C:\Program Files\internet explorer\iexplore.exe" "https://www.yahoo.co.jp/";
exit
2019/07/17(水) 23:41:41.05ID:2IS3Ei7C
>>330
助かりました。ありがとうございます><
2019/07/22(月) 20:50:29.11ID:64jFVFKi
質問です
chcp を設定後に日本語テキストファイルを type しても
なぜか数行ごとに部分的に文字化けします
正しく表示させる方法はありますか
ファイルをコード変換するしかないでしょうか

20932 (EUC-JP)
50220 (JIS)
65000 (UTF-7)
65001 (UTF-8)
2019/07/23(火) 00:29:27.63ID:NmYCCAI2
正常に表示できる部分もあるのか?
コマンドプロンプトのフォント設定はレジストリをいじればできるようだが
chcp したとしても
各コードに合わせた日本語フォントがないと思う

ファイルをコード変換には nkf などを利用すればよい
もちろんcp932に変換できない文字がありえる点には注意
2019/07/23(火) 01:19:58.32ID:dqAnc0cb
横から失礼。多分フォントの問題じゃないなあ。再現してみる。

@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
2019/07/23(火) 13:00:19.24ID:dqAnc0cb
>>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でどうぞ
336332
垢版 |
2019/07/23(火) 19:39:52.27ID:3qcsVE62
みなさんレスありがとうございました
>>335 のバッチを実行したら正しく表示されました
なにか不具合があれば nkf で変換します
2019/08/05(月) 14:25:26.72ID:KhkfuoHG
@ECHO OFF
FOR /L %%I IN (1,1,3) DO (
:ラベルの次に空行だと死ぬようだ

ECHO %%I
)
PAUSE
2019/08/05(月) 23:40:50.69ID:uv4O1i4q
>>337
FOR コマンドの中に単純にラベルを入れるとそうなる。
諦めろ。そういう腐った仕様だ。
2019/08/09(金) 07:12:05.83ID:e+IGCa9q
MSはpowershell作っといてcmdも生殺しのまま
2019/08/09(金) 07:24:42.21ID:i8+nUA9v
後方互換レガシー用だから
2019/08/10(土) 16:26:14.51ID:O+qo9jJ2
・ループはなるべくラベルgotoで作る
・処理はまとめてCALLで呼び出す
と変な仕様に悩まされなくて済む
2019/08/12(月) 01:15:40.10ID:qDWW1IB8
>>341
つーか >>337 は FOR コマンドの中に「REM コマンドの代わりとして」ラベルを入れたっぽいよね。

REM コマンドは確かにダサい。クソみたいにダサい。
が、完全な代替手段はないことが今日までの先人たちの研究で分かっている。
「○○な場合正しく動かない」というケースから逃れられない。
素直に REM しとけ、って話なのさ。
2019/08/12(月) 01:43:33.99ID:asx4qCxc
>>341
そうですね
バッチ作成30年の知恵

バッチ前言語というのをつくり、バッチに変換するツールがあるといいのに
2019/08/14(水) 08:17:57.87ID:2+7gdzMY
なぜエラー?
@echo off
for /l %%i in (1,1,3) do (^

echo %%i
)
pause
2019/08/14(水) 12:07:08.56ID:tEu06J9P
空白行があるのがまずいのです。
2019/08/15(木) 07:26:44.38ID:mKbuBo/x
echo onで見るとechoが消えてる
for /L %i in (1 1 3) do (%i)
2019/08/15(木) 07:36:02.85ID:mKbuBo/x
今、気付いたけど
for/Lのカウントの区切り文字は半角スペースでもいいんだな
2019/08/15(木) 12:44:36.23ID:ALsBqyPd
なんで"("のあとでエスケープしてるんだ?
2019/08/15(木) 18:55:50.85ID:8DKeAJZl
>>348
エスケープすると長い記述を改行分割できる。
下記なら動くのではと想像
@echo off
for /l %%i in (1,1,3) do (^
^
echo %%i
)
pause
2019/08/15(木) 18:58:32.85ID:8DKeAJZl
こうかも。
違いはechoの前の半角スペースの有無
@echo off
for /l %%i in (1,1,3) do (^
^
echo %%i
)
pause
2019/08/15(木) 20:14:09.75ID:bAdklReO
>>350
横からだが、だとしても ”(” の直後には不要でしょう
わざわざ地雷踏みにいってるとしか思えない
2019/08/15(木) 20:20:13.66ID:hL4sD0l+
>>349
そういうことじゃなく、
そんなところにエスケープさえしなければ動く、ということ
空改行があっても同じ

@echo off
for /l %%i in (1,1,3) do (

echo %%i
)
pause


そもそも、エスケープが必要なのは以下のような書き方の場合

@echo off
for /l %%i in (1,1,3) ^
do (

echo %%i
)
pause
2019/08/16(金) 13:12:21.88ID:nbkgz595
元々^が要らんのは分かるが
何で2行下のechoが消えるんだ?
2019/08/16(金) 19:53:07.91ID:tgbth6lv
何が正解か良く分からないけど「echo」が消えているのではなく
「echo %%i」が実行された結果「%i」って文字列が出力されて
いるんじゃないかな
2019/08/17(土) 03:04:11.02ID:loMKkBUO
うん、メッセージを出したかったら、
echo [メッセ−ジ文]
だよね。
2019/08/17(土) 07:25:02.72ID:u1p0gnkJ
>>346を見ろ
357332
垢版 |
2019/08/17(土) 18:15:26.70ID:etNorZr1
はろー♪
@echo off
(^

rem echo Hello, World!)
pause
2019/08/17(土) 21:41:43.17ID:nWccZbx0
>>357
cmd のパーサーが馬鹿なだけ。
そういうトリッキーな小賢しい書き方を探しても誰も幸せになれない。
2019/08/17(土) 23:29:25.24ID:u1p0gnkJ
>>357
そういうのはもういいから
2019/08/20(火) 20:01:18.85ID:S2+8M2EA
C:\Users\hogehoge\AppData\Local\Microsoft\Windows\InetCache

にIEのキャッシュファイルがあって、コマンドで削除したいのですが

del /f /q C:\Users\hogehoge\AppData\Local\Microsoft\Windows\InetCache\*

を管理者権限のコマンドプロンプトで実行しても消えてくれません。
どうすれば消せるのでしょうか?
環境はWin10です。

ちなみに上記の「del /f /q」を「dir」に変えて実行すると、何もファイルが表示されませんでした。
エクスプローラでは表示されるのに…
2019/08/20(火) 20:06:19.31ID:WpfDQiIq
まずは対象ファイルの属性を確認かな
2019/08/20(火) 20:39:45.13ID:WpfDQiIq
ここに詳しく書いてある
https://freesoft.tvbok.com/web/ie/ie11ie10webcache.html
2019/08/30(金) 17:07:15.01ID:C82bQLaF
任意のテキストファイルの各行(1〜N)を、
変数のARRAY[1〜N]にそのまま代入できますか?
テキストは空行あり、文字化けは無しで。
2019/08/30(金) 18:13:13.64ID:C82bQLaF
すみません
N行は指定じゃなくて全行です
2019/08/30(金) 19:43:28.54ID:hATE1ff9
>>363 確認の表示が不要なら消してくれ
 
@echo off & set /A N=0 & if "%~1"==":GETS" goto GETS
for /F "delims=" %%I in ('call "%~0" ":GETS" "%~1"') do (
set /A N+=1 & set %%I)
setlocal enabledelayedexpansion
for /L %%I in (1,1,%N%) do echo ARRAY[%%I]=!ARRAY[%%I]!
goto :eof
 
:GETS
set o="tokens=* delims=0123456789"
for /F %o% %%I in ('findstr /N "^" "%~2"') do (
set /A N+=1 & set s=%%I
setlocal enabledelayedexpansion
echo ARRAY[!N!]=!s:~1!
endlocal)
2019/08/30(金) 20:46:06.08ID:C82bQLaF
>>365
ありがとうございました
シフトJISで動作しました
2019/08/31(土) 00:24:30.62ID:dLbvCDhA
発見
call は遅い
自バッチ内であっても繰り返しの中では使わないほうがよい
2019/08/31(土) 02:06:06.88ID:KhyCGx+x
それは分かる
何かいい方法が有ったら書いてくれ
2019/08/31(土) 07:34:22.10ID:KhyCGx+x
ループの中では、call setも遅いな
call先はバッチが基本なので
%path%のフォルダ内にset.batが存在しないか
ループの中で毎回、無駄に検索して時間のロスに
2019/08/31(土) 13:05:56.96ID:4qIvp+ND
フルパスか相対パスで書けばいいのに
2019/08/31(土) 15:06:36.69ID:ny+pXiR9
クリーンに再実装しようとしてもうまく行かないし、Windows Terminalのオプソ化に期待
2019/08/31(土) 21:47:05.78ID:KhyCGx+x
内部コマンドsetにフルパス?
2019/09/17(火) 21:00:42.57ID:Syn6UaDZ
ポータブルデバイスにフォルダ移動したいのですがどのコマンドを使えばよろしいのでしょうか?

宜しくお願いします。
2019/09/18(水) 07:27:23.31ID:zCU+H1xg
robocopy
2019/09/18(水) 22:10:15.94ID:zS9nLp3S
>>374
回答ありがとございます。
試してみましたがうまくいきませんでした。
2019/09/19(木) 17:48:14.75ID:W0BHkkEI
そのポータブルデバイスとやらのスレで聞け
2019/09/19(木) 19:33:15.60ID:UaiZGsoz
>>373
MTP接続しているデバイスにbatでフォルダ移動したいということ?
2019/09/19(木) 21:49:07.77ID:oZTJ7ty8
>>377
MTP接続しているデバイスの端末(スマホ)のフォルダをCドライブにコピーしたいのです。

何度もありがとございます。
2019/09/20(金) 18:54:32.90ID:YblgUZDU
>>378
MTPにWindowsからアクセスする場合にはWDP (Windows Portable Device)という
仕組みを使ってアクセスする必要があるらしいのでPowerShellとかVBSみたいな
COMオブジェクトに対応しているスクリプト言語を使うかプログラミングしないと
無理みたいだけど
2019/09/20(金) 20:53:45.43ID:C2+cwByF
>>379
なるほどコマンドだけでは出来ないのですね。ありがとうございました。
2019/09/20(金) 21:22:16.17ID:CafmkPOq
mtpじゃなくftp使えばいいんじゃない
2019/09/20(金) 23:15:32.97ID:Va/jwPXC
スレチだけど、横から失礼。
今USBで繋いだスマホのファイルをPCのexplorerで見てたら、
どうしても表示されないファイルが一部あるんだよ。
表示を更新してもダメだ。何なんだろ、これ。
スマホ側でzipに圧縮したら転送できたんだが。
2019/09/21(土) 09:52:34.32ID:obXFPJy6
>>382
MTPは本来画像とか音声とか映像ファイルを共有するための規格なんだけど
それでは不便なので実装者が拡張して他のファイルも見えるようにしているらしい

でWindowsのexplorerで削除できないファイルってのは何種類かあるけど表示
できないってのは覚えがないのでスマホ側の実装の問題じゃないかな
2019/09/21(土) 11:24:33.96ID:aqL81KxG
>>383
スマホのandroidがおかしいのかも
explorerでコピペしたら
全数処理できてるか要確認ですね
2019/09/21(土) 12:19:59.86ID:Zmbs8cMB
>>382
メディアストレージのDBが壊れてるか更新されてないだけでは?
2019/09/21(土) 12:39:19.92ID:aqL81KxG
>>385
zip圧縮後、繋ぎ直したらzipは表示されたが元ファイルは非表示、
なので更新というより壊れてたみたいね
2019/09/21(土) 23:40:04.00ID:bVn3Z6J/
>>378
Android Debug Bridge(adb)を使用してはどうでしょうか?
https://developer.android.com/studio/command-line/adb.html?hl=ja#copyfiles

例)adb pull remote local

ただしワイルドカードが使用できないので工夫が必要かも
2019/09/22(日) 06:16:16.89ID:9I7oEjtC
そもそもAndroidなのか?
2019/09/23(月) 04:39:39.37ID:LINEF6Ks
>>387
adbを使用したらうまくいきました。
ありがとうございました。
2019/10/01(火) 22:20:01.40ID:vtcCH4Ws
vbsスクリプト使用者に対話型でURLを入力させようと思い
inputboxを使用していましたが254文字以降は切り捨てられるようで
切り捨てられた場合にcmdを呼んでコマンドプロンプトで
TYPE CONで入力させ標準出力からとろうと思いました。
コマンドプロンプトから
TYPE CON
で文字入力していくと510文字しか打てません
COPY CON
で文字入力していく場合も510文字しか打てません
ただこちらは改行して2回目以降の文字入力は254文字までしか打てません
コマンドプロンプトはwindowsの仕様だともっと入力できたはずだと思うんですけど
TYPE COPYコマンドが原因なのでしょうか?
上限が512-2 256-2なのが気になります
2019/10/01(火) 22:57:55.77ID:co/wCjS7
>>390
set /p var
で入力すると1023文字入力できるみたい
2019/10/01(火) 23:08:42.31ID:vtcCH4Ws
>>391
ありがとうございます
環境変数に突っ込んでそっちからとる案ってことですね
2019/10/01(火) 23:19:31.66ID:co/wCjS7
標準出力がいいなら
echo %var%
を最後に付けとけばうまくいかないかな?
2019/10/01(火) 23:41:17.62ID:vtcCH4Ws
いえVBSで環境変数からでも取れるんでどちらでもいいんですが
この方法は毎回ファイル書き込みはいるのなら避けたいですね
2019/10/03(木) 06:03:26.81ID:qiM7wE73
>>390

findstr ^^

ではどうですか?
入力の最後は改行とCtrl+Z
8000文字は入ったが、それ以上は試していない
2019/10/03(木) 19:45:19.23ID:+nOn2TPH
>>395
ありがとうございます。たしかにfindstr ^^ 試すと長く入力できますね
ただスクリプトが動く動きません(type con copy con以外)
たぶんexecで標準入出力を横取りしてるからなのかなと思ったんですけどならtype conはなぜ動くのかという気もします
//Prompt.vbs
Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.exec("cmd /c title " & Replace(Replace(Text,vbCr,""),vbLf,"") & " && type con")
'Set oExec = WshShell.exec("cmd /c findstr ^^")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox Prompt("test dayo","")
2019/10/03(木) 20:43:23.90ID:jymbX9V4
cmdじゃないけど
powershell -Command $a=read-host; write-host $a
とかどうよ
2019/10/03(木) 21:20:07.70ID:+nOn2TPH
powershellもちょっと試してたんですけどこっちもキーボード入力がはいってるように見えないです
powershellはcommand移行の注釈がいまいちわからなくてそれが原因なのかなとも思ったんですけど
(""の場合は前に&をつけるとかどうとか)

Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
'Set oExec = WshShell.exec("cmd /c title " & Replace(Replace(Text,vbCr,""),vbLf,"") & " && type con")
'Set oExec = WshShell.exec("cmd /c findstr ^^")
Set oExec = WshShell.exec("powershell -NoExit -NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command $a=read-host; write-host $a")

Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox Prompt("test dayo","")
2019/10/04(金) 05:33:06.84ID:igWxDR2f
>>398
いまいちVB.NETがどういう環境で使えるのか分からないし
PowerShellの実行を許可してない環境でも動くのかも分からないが
VB.NETのinputboxには256文字の入力制限が無い模様

Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.exec("powershell -NoProfile -ExecutionPolicy Unrestricted -C add-type -AssemblyName microsoft.VisualBasic; [Microsoft.VisualBasic.Interaction]::InputBox('URLを入力してください', 'URL入力');")
Prompt = oExec.stdout.ReadLine()
End Function

'msgbox Prompt("test dayo","")
WScript.Echo Prompt("test dayo","")
2019/10/04(金) 06:57:13.54ID:2Xve1BBy
>>396
良く分からんが、こんなのでどうですかね?
-------foo.bat
@findstr ^^ < con
-------Prompt.vbs
Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.exec("foo.bat")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox Prompt("test dayo","")
2019/10/04(金) 08:44:14.07ID:2Xve1BBy
バッチ不要だな
Set oExec = WshShell.exec("cmd /c findstr /R . < con")
最後に1023文字しか表示されないなReadLineのせいか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況