拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。
※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1424858999/
それ以前の過去スレ
%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/
探検
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/03/11(土) 13:47:11.66ID:2LSSeyH1
707デフォルトの名無しさん
2018/08/12(日) 09:13:22.78ID:pT5cyKVs708デフォルトの名無しさん
2018/08/12(日) 09:20:16.40ID:yoDY/qSn if の比較は = じゃなくて == だろ
709デフォルトの名無しさん
2018/08/12(日) 09:40:11.52ID:pT5cyKVs710デフォルトの名無しさん
2018/08/12(日) 11:52:31.87ID:eNrGPpfD 何故か以前にいろいろ間違いすぎなんだよ
ゼロから書き直せ
ゼロから書き直せ
711デフォルトの名無しさん
2018/08/12(日) 14:40:43.26ID:IZr1Emsm712デフォルトの名無しさん
2018/08/12(日) 16:49:52.15ID:dh6WaJfS >>704>>706
ERRORLEVELは代入すると返却値として使えなくなるんじゃ
なかったっけ?
だからやるならば
set ERRORLEVEL=
だけにしないとだめなのでは
ただ、これをやってバッチ内でERRORLEVEL環境変数の
初期化みたいなことしてもうまく動かないこともあったような
気がするけど何か勘違いしてるんだろうな
ERRORLEVELは代入すると返却値として使えなくなるんじゃ
なかったっけ?
だからやるならば
set ERRORLEVEL=
だけにしないとだめなのでは
ただ、これをやってバッチ内でERRORLEVEL環境変数の
初期化みたいなことしてもうまく動かないこともあったような
気がするけど何か勘違いしてるんだろうな
713デフォルトの名無しさん
2018/08/12(日) 18:02:08.07ID:aLWFoJnR >>706
パイプの動作が原因だろう
パイプの右側は子タスクでの実行となる(おそらくは)
メインタスクに環境を引き継がないんだと思う
echo "a"|for /f %%i in ('find "a"') do set x=OK
echo.%x%
これで%x%には値が入らない
echo "a"|find "a"&set x=OK
なら%x%にはOKが入るが
echo "a"|(find "a"&set x=OK)
では%x%にはOKが入らない
パイプの動作が原因だろう
パイプの右側は子タスクでの実行となる(おそらくは)
メインタスクに環境を引き継がないんだと思う
echo "a"|for /f %%i in ('find "a"') do set x=OK
echo.%x%
これで%x%には値が入らない
echo "a"|find "a"&set x=OK
なら%x%にはOKが入るが
echo "a"|(find "a"&set x=OK)
では%x%にはOKが入らない
714デフォルトの名無しさん
2018/08/12(日) 18:09:31.24ID:aLWFoJnR >>713
下2つ&は&&の間違いだが、別に&だろうが&&だろうが(この場合の)結果は変わらない
下2つ&は&&の間違いだが、別に&だろうが&&だろうが(この場合の)結果は変わらない
715デフォルトの名無しさん
2018/08/12(日) 18:16:28.72ID:lJZ67VC6 パイプはcallと一緒だなやはり
716デフォルトの名無しさん
2018/08/12(日) 18:36:12.51ID:lJZ67VC6 setコマンドの長いヘルプの下の方に
「ユーザーがこれらの名前の変数を明示的に定義する場合、
その定義は下記の動的な定義を無効にします。」
と書かれてる。errorlevelをsetするのは回避した方がいいだろう
「ユーザーがこれらの名前の変数を明示的に定義する場合、
その定義は下記の動的な定義を無効にします。」
と書かれてる。errorlevelをsetするのは回避した方がいいだろう
717デフォルトの名無しさん
2018/08/12(日) 18:40:34.53ID:aLWFoJnR ついでに言っとくと
パイプはデータの受け手が子タスクになったけど
for /fの'コマンド'は送り手が子タスクになる
従って、'コマンド'の中で環境変数に値を入れても、メインタスクには引き継がれない
パイプはデータの受け手が子タスクになったけど
for /fの'コマンド'は送り手が子タスクになる
従って、'コマンド'の中で環境変数に値を入れても、メインタスクには引き継がれない
718デフォルトの名無しさん
2018/08/12(日) 21:23:34.47ID:pT5cyKVs >>710
難癖付けてばかりで話題提供もできない人はゼロから人生をやり直した方が(ry
難癖付けてばかりで話題提供もできない人はゼロから人生をやり直した方が(ry
719デフォルトの名無しさん
2018/08/12(日) 21:38:30.71ID:pT5cyKVs >>713
んー、俺はもうそこまで調べる気もなくてね…ほぼ諦めてる。
子タスクとかどこの文献見ればあるんだろう?
あってもなくても、んなテクニック、引継ぎできる代物でもあるまい…。
例えば、
type data.txt | cscript //nologo hoge.vbs
if not errorlevel 1 (
:
これも実は…駄目なのだ!!
VBScript側で Call WScript.Quit(1)
で抜けられれば引っかかるが…
想定外の変なデータを食わされてランタイムエラーで落ちた場合には引っかからない。
cscript はスクリプトエンジンだから別物扱いしとこ…てなところで。
hoge.vbs が正常終了する直前に success.txt を空で作るようにしといて。
del success.txt
type data.txt | cscript //nologo hoge.vbs
if exist success.txt (
:
)
del success.txt
こんな感じにするしかなかったし、これならせめて引継ぎができると思う。
んー、俺はもうそこまで調べる気もなくてね…ほぼ諦めてる。
子タスクとかどこの文献見ればあるんだろう?
あってもなくても、んなテクニック、引継ぎできる代物でもあるまい…。
例えば、
type data.txt | cscript //nologo hoge.vbs
if not errorlevel 1 (
:
これも実は…駄目なのだ!!
VBScript側で Call WScript.Quit(1)
で抜けられれば引っかかるが…
想定外の変なデータを食わされてランタイムエラーで落ちた場合には引っかからない。
cscript はスクリプトエンジンだから別物扱いしとこ…てなところで。
hoge.vbs が正常終了する直前に success.txt を空で作るようにしといて。
del success.txt
type data.txt | cscript //nologo hoge.vbs
if exist success.txt (
:
)
del success.txt
こんな感じにするしかなかったし、これならせめて引継ぎができると思う。
720デフォルトの名無しさん
2018/08/12(日) 21:45:20.77ID:pT5cyKVs あ、ごめん。
if not errorlevel 1 (
正常終了処理
) else (
異常終了処理
)
て書くべきだった
if not errorlevel 1 (
正常終了処理
) else (
異常終了処理
)
て書くべきだった
721デフォルトの名無しさん
2018/08/13(月) 00:05:28.17ID:MtAcIApx 勉強になる話題だけど、バッチファイルは言語仕様の規模に比して闇が深すぎると思う
722デフォルトの名無しさん
2018/08/13(月) 00:46:15.48ID:bTGAGeMt723デフォルトの名無しさん
2018/08/13(月) 03:10:07.37ID:EnLsbSTB >>719
子タスクと言ったのは俺の推測(想像)でしかないから
データの受け渡しを行うのには、送り手と受け手の両者が存在しないと変だろうってことからね
あと、タスクというのも、適当な概念だから
親の環境を引き継いで生成された子環境のことね
実体はスレッドだろうと想像するけど
子タスクと言ったのは俺の推測(想像)でしかないから
データの受け渡しを行うのには、送り手と受け手の両者が存在しないと変だろうってことからね
あと、タスクというのも、適当な概念だから
親の環境を引き継いで生成された子環境のことね
実体はスレッドだろうと想像するけど
724デフォルトの名無しさん
2018/08/13(月) 10:15:08.27ID:aFOAPcea >>703
綴りといえばenabledelayedexpantionも罠レベルだよ・・・誰だこれ考えたの('A`)
綴りといえばenabledelayedexpantionも罠レベルだよ・・・誰だこれ考えたの('A`)
725デフォルトの名無しさん
2018/08/13(月) 10:38:49.38ID:WsZfoIsu なるほど引っかかってる
726デフォルトの名無しさん
2018/08/15(水) 02:41:45.12ID:xax+OHuY 元の英語がわかれば
enable delayed expansion
を繋げただけなんだよ
enable delayed expansion
を繋げただけなんだよ
727デフォルトの名無しさん
2018/08/15(水) 13:28:33.22ID:j7d0pce0 質問させてください。
Linuxでいうところの、/dev/nullで標準入力待ちを終了させるのはどうすればいいのでしょうか。
具体的には、Windows向けのopensslコマンドを実行しています。
openssl s_client -connect 〜とやると標準出力が一通り出たところで入力待ちになる仕様で、
コマンドプロンプト上だとCtrl+Cで止めてあげる必要があります。
Linuxだと、末尾に< /dev/nullで終わらせられるのですが、Windowsバッチで同じように終了させる方法は無いでしょうか。
Linuxでいうところの、/dev/nullで標準入力待ちを終了させるのはどうすればいいのでしょうか。
具体的には、Windows向けのopensslコマンドを実行しています。
openssl s_client -connect 〜とやると標準出力が一通り出たところで入力待ちになる仕様で、
コマンドプロンプト上だとCtrl+Cで止めてあげる必要があります。
Linuxだと、末尾に< /dev/nullで終わらせられるのですが、Windowsバッチで同じように終了させる方法は無いでしょうか。
728デフォルトの名無しさん
2018/08/15(水) 13:50:50.34ID:o8lgioa7 < nul
じゃダメなの?
じゃダメなの?
729デフォルトの名無しさん
2018/08/15(水) 13:54:24.10ID:j7d0pce0 >>728
書いてなくてすみません。それだとダメでした。
書いてなくてすみません。それだとダメでした。
730デフォルトの名無しさん
2018/08/15(水) 14:06:33.66ID:o8lgioa7731デフォルトの名無しさん
2018/08/15(水) 14:36:26.98ID:j7d0pce0 >>730
参考サイトありがとうございます。
先ほど教えていただいたのと同じ< nulですよね。
サンプルコマンドの通り打ってみても入力待ちで止まります…。
念のためOpenSSLを入れ直しても変わりませんでした。
サンプルでパイプで渡してる直前まで( < nul 2> nul)で試すと、
実行結果がダーっと出て、入力待ちで止まるんですよね…。
参考サイトありがとうございます。
先ほど教えていただいたのと同じ< nulですよね。
サンプルコマンドの通り打ってみても入力待ちで止まります…。
念のためOpenSSLを入れ直しても変わりませんでした。
サンプルでパイプで渡してる直前まで( < nul 2> nul)で試すと、
実行結果がダーっと出て、入力待ちで止まるんですよね…。
732デフォルトの名無しさん
2018/08/15(水) 15:17:17.37ID:j7d0pce0 下のサイトのやり方も参考にしつつやってみましたが、どれも結果は変わらずでした。
後出しですみませんが、当方の環境はWin10 Pro 1803、opensslは1.0.2m.1.0.2oでやってました。
https://stackoverflow.com/questions/25760596/how-to-terminate-openssl-s-client-after-connection
回答くださった方、ありがとうございました。
もしやってみて、何言ってんだ、できたぞ?という方いらっしゃいましたら教えていただければ幸いです。
後出しですみませんが、当方の環境はWin10 Pro 1803、opensslは1.0.2m.1.0.2oでやってました。
https://stackoverflow.com/questions/25760596/how-to-terminate-openssl-s-client-after-connection
回答くださった方、ありがとうございました。
もしやってみて、何言ってんだ、できたぞ?という方いらっしゃいましたら教えていただければ幸いです。
733デフォルトの名無しさん
2018/08/15(水) 15:19:22.69ID:xax+OHuY 制御文字を入力できるエディタ(サクラエディタ等)で
バッチを開いて
nulの代りに[0x03]か0x04の制御コード入れてみては?
バッチを開いて
nulの代りに[0x03]か0x04の制御コード入れてみては?
734デフォルトの名無しさん
2018/08/15(水) 15:25:45.29ID:jNJ7KLOy >>732
普段OpenSSLは使わないけどたまたまインストールしてあったOpenSSL 1.1.0hで出来たよ
コマンドはこう
openssl s_client -connect example.com:443 < nul 2> nul | openssl x509 -text | findstr Not
普段OpenSSLは使わないけどたまたまインストールしてあったOpenSSL 1.1.0hで出来たよ
コマンドはこう
openssl s_client -connect example.com:443 < nul 2> nul | openssl x509 -text | findstr Not
735デフォルトの名無しさん
2018/08/15(水) 15:59:22.79ID:j7d0pce0 >>734
試していただいてありがとうございます。
そのコマンドを実行したときなのですが、コンソールが返ってくるまで1分ほどかかりませんか? すぐ返りますか?
< nulの有無に関わらず1分ほど待つので、単にタイムアウトか何かで終了しているのかなと思っております。
nulを入力として受け取っているなら、すぐに1個目のパイプより前のコマンドは終わるはずだと思いまして…。
試していただいてありがとうございます。
そのコマンドを実行したときなのですが、コンソールが返ってくるまで1分ほどかかりませんか? すぐ返りますか?
< nulの有無に関わらず1分ほど待つので、単にタイムアウトか何かで終了しているのかなと思っております。
nulを入力として受け取っているなら、すぐに1個目のパイプより前のコマンドは終わるはずだと思いまして…。
736デフォルトの名無しさん
2018/08/15(水) 16:01:57.88ID:jNJ7KLOy >>735
すぐ返ってくるよ
すぐ返ってくるよ
737デフォルトの名無しさん
2018/08/15(水) 16:09:56.08ID:j7d0pce0738733
2018/08/15(水) 16:14:15.33ID:xax+OHuY >>733
1)コマンドプロンプトで下記のように入力し、hoge.txtを作る
copy con hoge.txt[Enter]
[Ctrl+d]
[Ctrl+z]
2)バッチの方で
<hoge.txt
とすればコンソールでCtrl+Dを入力したのと同じ効果となるはず
1)コマンドプロンプトで下記のように入力し、hoge.txtを作る
copy con hoge.txt[Enter]
[Ctrl+d]
[Ctrl+z]
2)バッチの方で
<hoge.txt
とすればコンソールでCtrl+Dを入力したのと同じ効果となるはず
739デフォルトの名無しさん
2018/08/15(水) 16:47:26.04ID:j7d0pce0740デフォルトの名無しさん
2018/08/15(水) 21:05:55.42ID:cg3gjcxB 悪いけど、Windowsバッチに鉄板を求めるのも、追いかけるのも無駄。
歴史的経緯でそうなってしまっている。マトモな資料なんかありゃない。
NULの解釈がコマンドによって違ったって全く不思議じゃあない。
犬のクソをクソだと知りつつカリントウだと思いながら食わなければならないような、そんな代物。
好きで書いてる奴なんかほとんどいないと思う。
バッチで書いた方が良いと判断できる材料がなければVBscriptやPowerShellで書いた方が遥かにいい。
環境が許せば他の言語の導入を検討するのも大いにいい。
よく知られたコマンドをよく知られたイディオム下で使うのでもなければ、バッチでなんか書かない方がいい。
それでもクソみたいにハマることがあるんだから。
歴史的経緯でそうなってしまっている。マトモな資料なんかありゃない。
NULの解釈がコマンドによって違ったって全く不思議じゃあない。
犬のクソをクソだと知りつつカリントウだと思いながら食わなければならないような、そんな代物。
好きで書いてる奴なんかほとんどいないと思う。
バッチで書いた方が良いと判断できる材料がなければVBscriptやPowerShellで書いた方が遥かにいい。
環境が許せば他の言語の導入を検討するのも大いにいい。
よく知られたコマンドをよく知られたイディオム下で使うのでもなければ、バッチでなんか書かない方がいい。
それでもクソみたいにハマることがあるんだから。
741デフォルトの名無しさん
2018/08/15(水) 21:14:01.94ID:OWPSpuGG UNCパスを一向に解釈しないのがとにかく糞だと思う
742デフォルトの名無しさん
2018/08/15(水) 21:52:07.27ID:X+03HcfZ 移動はできないけど解釈はできるでしょ…
743740
2018/08/15(水) 21:52:48.84ID:X+03HcfZ xcopy のヘルプは酷い。
Vistaでは「推奨されない。使わないで。robocopyを使って」みたいな文言が出てきた。理由は記述なし。
この文言、7以降では消えた。
ネットワーク越しにxcopy中に通信が切れたらどうなるか、MSは知ってたはずなんだが。
xcopyを使いまくってるクソベンダーどもから「直しきれない。フザけんな!」とでも突き上げを食らったんだろうか?
こういうところも本当に信用できない。
Vistaでは「推奨されない。使わないで。robocopyを使って」みたいな文言が出てきた。理由は記述なし。
この文言、7以降では消えた。
ネットワーク越しにxcopy中に通信が切れたらどうなるか、MSは知ってたはずなんだが。
xcopyを使いまくってるクソベンダーどもから「直しきれない。フザけんな!」とでも突き上げを食らったんだろうか?
こういうところも本当に信用できない。
744740
2018/08/15(水) 21:58:51.70ID:X+03HcfZ >>741
cmd「あ、pushdとかでヨロ」
ネットワーク系で言えばpingが酷い。
if errorlevel そのものが効かない。エラーしたらズルズルっと抜ける。
あ、某SIer(富〇通)のバッチを思い出した。
pingでTCPの疎通確認?エラー処理なし?
バッチとか以前の問題だった。
富〇通は日本から消え去ればいいと思った。
cmd「あ、pushdとかでヨロ」
ネットワーク系で言えばpingが酷い。
if errorlevel そのものが効かない。エラーしたらズルズルっと抜ける。
あ、某SIer(富〇通)のバッチを思い出した。
pingでTCPの疎通確認?エラー処理なし?
バッチとか以前の問題だった。
富〇通は日本から消え去ればいいと思った。
745740
2018/08/15(水) 22:00:15.25ID:X+03HcfZ おいおい、さっきからレスに「ドット・エグゼ」を半角英数で書くと弾かれるようになってるぜ…
なんだいこりゃ。
なんだいこりゃ。
746デフォルトの名無しさん
2018/08/16(木) 00:37:28.93ID:fpSDK1Rz 標準入力から読むんじゃなければ <nul なんか無意味だろうに...
747デフォルトの名無しさん
2018/08/16(木) 00:47:34.46ID:nXvfu44n pingは標準エラー出力の文言で処理するのが慣例だろ...
748デフォルトの名無しさん
2018/08/16(木) 04:14:43.69ID:W93QKVeg エロ動画.avi .exe
749デフォルトの名無しさん
2018/08/16(木) 06:00:01.74ID:3IMawj9A すみません、CMDを最近やり始めたのですが
ネットで検索すると%Aと%%Aのように「%」が1つ付く場合と2つ付く場合があったのですが
どういう違いがあるのでしょうか?
ネットで検索すると%Aと%%Aのように「%」が1つ付く場合と2つ付く場合があったのですが
どういう違いがあるのでしょうか?
750デフォルトの名無しさん
2018/08/16(木) 06:18:11.25ID:nXvfu44n >>749
%Aはfor文内でのみつかう変数。for文をコマンドラインから直接実行する場合は%A
バッチスクリプト内で記述する場合は%%Aとする。
for /? (またはhelp for)
で表示されるヘルプの上の方に書かれている。
%Aはfor文内でのみつかう変数。for文をコマンドラインから直接実行する場合は%A
バッチスクリプト内で記述する場合は%%Aとする。
for /? (またはhelp for)
で表示されるヘルプの上の方に書かれている。
751デフォルトの名無しさん
2018/08/16(木) 11:22:52.16ID:hWBtBIZ+ batファイルで任意のプログラムを実行し、一定時間後に強制終了させる(画面を閉じる)という処理は実現可能ですか?
任意のプログラムも同じDOS画面上で走ります。
タイマーでtaskkillを実行してcmdを終了させるというのを考えたんですが、cmdが複数あると使えないので他に方法があれば知りたいです。
任意のプログラムも同じDOS画面上で走ります。
タイマーでtaskkillを実行してcmdを終了させるというのを考えたんですが、cmdが複数あると使えないので他に方法があれば知りたいです。
752デフォルトの名無しさん
2018/08/16(木) 15:41:05.25ID:KoNkkRtT753デフォルトの名無しさん
2018/08/16(木) 19:34:15.23ID:hWBtBIZ+ >>752
ありがとうございます!
ありがとうございます!
754デフォルトの名無しさん
2018/08/16(木) 20:50:06.40ID:qKowi4/2 >>747
否。
pingはICMP。pingが通ってもTCPが通るという保証は無い。
逆に、pingは返さないがTCPが通る環境だってある。
ただでさえpingコマンドの動きはおかしいのに、pingでTCP疎通確認しました!というのが大手SIer(富〇通とか)が首を釣るべきポイント。
ダミーの共有フォルダを用意して
dir \\hoge.local\hoge
とかでSMBを経由したTCPの疎通が確認できるんだぜ??
頭が悪いとしか言いようがない。
もう一度言う。
pingではTCPの疎通は「絶対に確認できない」
否。
pingはICMP。pingが通ってもTCPが通るという保証は無い。
逆に、pingは返さないがTCPが通る環境だってある。
ただでさえpingコマンドの動きはおかしいのに、pingでTCP疎通確認しました!というのが大手SIer(富〇通とか)が首を釣るべきポイント。
ダミーの共有フォルダを用意して
dir \\hoge.local\hoge
とかでSMBを経由したTCPの疎通が確認できるんだぜ??
頭が悪いとしか言いようがない。
もう一度言う。
pingではTCPの疎通は「絶対に確認できない」
755デフォルトの名無しさん
2018/08/16(木) 20:52:58.55ID:qKowi4/2 言っとくけど、LinuxのpingでもTCPの疎通は確認できないからな。分かってると思うけど。
756デフォルトの名無しさん
2018/08/16(木) 21:07:41.39ID:t6OwQxX1757デフォルトの名無しさん
2018/08/16(木) 21:10:18.18ID:nXvfu44n プロトコルが別物というのはその通りだな、
コマンドプロンプトでのエラーハンドリングの話かと思ったわ(分かっちゃいるとは思うが)
コマンドプロンプトでのエラーハンドリングの話かと思ったわ(分かっちゃいるとは思うが)
758デフォルトの名無しさん
2018/08/16(木) 22:17:08.25ID:fpSDK1Rz >>754
わなくらい以降、SMBを通すようなネットワーク組むような業者はやばいだろ
わなくらい以降、SMBを通すようなネットワーク組むような業者はやばいだろ
759デフォルトの名無しさん
2018/08/16(木) 22:22:12.09ID:3IMawj9A >>750
ありがとうございます!理解しました。
ありがとうございます!理解しました。
760デフォルトの名無しさん
2018/08/16(木) 22:30:01.84ID:3IMawj9A このスレは1年半前に立ってまだ760レスぐらいですが
ここ1ヶ月半で見ると200レスぐらい書き込みがあるので
CMDの人気が出てきたということでよいのでしょうか?
ここ1ヶ月半で見ると200レスぐらい書き込みがあるので
CMDの人気が出てきたということでよいのでしょうか?
761デフォルトの名無しさん
2018/08/16(木) 22:36:21.06ID:qKowi4/2762デフォルトの名無しさん
2018/08/16(木) 22:51:43.40ID:t6OwQxX1763デフォルトの名無しさん
2018/08/16(木) 23:03:11.26ID:qKowi4/2 >>762
1. 富〇通のシステムは、端末の起動時にサーバーにTCPの疎通確認をする。それがただpingを打つ「だけ」。通ろうが通るまいが処理を続行。意味がない。
2. 俺はこう思った。「端末が見に行く共有フォルダをdirしてエラー検出した方が確実でしょ?何でこうしないの?」
て言わなきゃ分からないアレですか?
1. 富〇通のシステムは、端末の起動時にサーバーにTCPの疎通確認をする。それがただpingを打つ「だけ」。通ろうが通るまいが処理を続行。意味がない。
2. 俺はこう思った。「端末が見に行く共有フォルダをdirしてエラー検出した方が確実でしょ?何でこうしないの?」
て言わなきゃ分からないアレですか?
764デフォルトの名無しさん
2018/08/16(木) 23:07:16.23ID:m8VsM5un つまりイントラネットなわけね
ならpingが通れば回線チェックできるとしても問題なかろう
鯖がpingを許可してるシステムだろうし
ならpingが通れば回線チェックできるとしても問題なかろう
鯖がpingを許可してるシステムだろうし
765デフォルトの名無しさん
2018/08/16(木) 23:19:02.45ID:qKowi4/2 >>764
おい。
十歩くらいは譲ってやる。
だがお前は馬鹿。
問題。
Windowsサーバーはネットワークの場所の検出に失敗することがあります。
パブリックと勘違いしたらpingを返さないことがあります。
さて、検出に失敗する場合はどのような場合でしょうか?
答えではないが発生例
富〇通に渡された手順通りにサーバーを再起動したらそうなった
> ならpingが通れば回線チェックできるとしても問題なかろう
pingの結果だけを信用したら駄目なんだよクソが!!
どんだけレベル低いんだお前??
…ああもう呆れる…。
おい。
十歩くらいは譲ってやる。
だがお前は馬鹿。
問題。
Windowsサーバーはネットワークの場所の検出に失敗することがあります。
パブリックと勘違いしたらpingを返さないことがあります。
さて、検出に失敗する場合はどのような場合でしょうか?
答えではないが発生例
富〇通に渡された手順通りにサーバーを再起動したらそうなった
> ならpingが通れば回線チェックできるとしても問題なかろう
pingの結果だけを信用したら駄目なんだよクソが!!
どんだけレベル低いんだお前??
…ああもう呆れる…。
766デフォルトの名無しさん
2018/08/16(木) 23:23:10.64ID:qKowi4/2 んー、バッチだけじゃなくてWinの挙動も関係すんなぁ…ネットワーク系は。
まあいい、また今度な。
まあいい、また今度な。
767デフォルトの名無しさん
2018/08/16(木) 23:27:50.00ID:qKowi4/2 あ、答えはTechNetとかに載ってるから興味ある人はてきとーに調べといて。
英語だけど。
英語だけど。
768デフォルトの名無しさん
2018/08/16(木) 23:59:08.11ID:fpSDK1Rz >>765
パブリックと勘違いしてるなら、それはpingでも検出できるじゃん。
パブリックと勘違いしてるなら、それはpingでも検出できるじゃん。
769デフォルトの名無しさん
2018/08/17(金) 01:30:25.51ID:a2i7eL0Z 絶対に正しい自分の主張を認めてもらいたいだけの人なんだから相手しても意味ないでしょ
770デフォルトの名無しさん
2018/08/17(金) 02:44:03.57ID:jfy/CF71 昔はpingを使っていたが、今は
set errorlevel=
arp -a|findstr 192.168.0. >nul
if not %ERRORLEVEL% == 0 goto オフライン処理
set errorlevel=
arp -a|findstr 192.168.0. >nul
if not %ERRORLEVEL% == 0 goto オフライン処理
771デフォルトの名無しさん
2018/08/17(金) 05:25:51.61ID:KaaDwp63 >>763
本当に頭悪いんだな w
いきなりdir \\hoge.local\hogeが失敗しただけだと何が起きてるのかわからん
pingが通ってるかどうかで障害の範囲がある程度絞れる
ちょっとしたシステムだとネットワークとサーバーで違うベンダーが構築してるとかあるからどっちを呼び出すかの切り分けに使ったりする
本当に頭悪いんだな w
いきなりdir \\hoge.local\hogeが失敗しただけだと何が起きてるのかわからん
pingが通ってるかどうかで障害の範囲がある程度絞れる
ちょっとしたシステムだとネットワークとサーバーで違うベンダーが構築してるとかあるからどっちを呼び出すかの切り分けに使ったりする
772デフォルトの名無しさん
2018/08/17(金) 06:18:35.06ID:+gK4oX51 ping ホスト名
で打ってるならその端末がWINS名前解決出来てるかは分かる
でも「TCP疎通」ってタームはたしかに違和感ある。某省庁案件で富士通のインフラ部隊と仕事したが、そんなターム使って無かったけどな...
で打ってるならその端末がWINS名前解決出来てるかは分かる
でも「TCP疎通」ってタームはたしかに違和感ある。某省庁案件で富士通のインフラ部隊と仕事したが、そんなターム使って無かったけどな...
773デフォルトの名無しさん
2018/08/17(金) 07:30:14.12ID:J26jcjpU ネットワーク=TCPみたいに言ってる奴は見たことあるな
たいてい文脈でわかるからいちいち指摘なんてしないけどね
たいてい文脈でわかるからいちいち指摘なんてしないけどね
774デフォルトの名無しさん
2018/08/18(土) 21:40:50.22ID:/0AtM/3Y ただの記号ですら言い方は人それぞれだからなあ
ピリオド : ドット、ポチ、ポツ
アスタリスク : アスター、コメ、ピカ
アンダースコア : アンダーバー、アンスコ
ピリオド : ドット、ポチ、ポツ
アスタリスク : アスター、コメ、ピカ
アンダースコア : アンダーバー、アンスコ
775デフォルトの名無しさん
2018/08/18(土) 22:00:05.69ID:/4eOy7p1 アンスコは言いにくい
776デフォルトの名無しさん
2018/08/19(日) 08:47:38.57ID:DFKp/EIO 一番言いやすいだろ
777デフォルトの名無しさん
2018/08/19(日) 10:20:25.64ID:vvrGLkFs 777
778デフォルトの名無しさん
2018/08/19(日) 20:48:42.50ID:10g4+5oK >>768
パブリックと誤検出した場合、当たり前だけどpingは返さない。
ドメインコントローラーが勘違いした場合、端末も勘違いすることがある。
クソな再起動手順がもたらす問題を回避するために…「全プロファイルでファイァーウォール停止」を要求されたらそりゃたまらんわ。
正しい再起動手順でやれば、そんな事態は一切おこらないってのにさ。
>>771
おまい、スレ違い。
ここはバッチスクリプトスレ。
過不足ない通信が可能かどうかを調べるバッチなりなんなりを使うのが主題。
実際にエラーが出て連絡を受けた人間が調査の手始めにpingを打つことは普通にある。
>>772
???WINS名前解決???
何世紀の人????
「少なくとも、相手がTCPを使ったサービスを実行できる状態にある」の言いに使ってるけどね。間違いじゃないだろ。
本当に相手のサービスそのものがダウンしているかどうかにはtelnetを使ったりするし。MS純正じゃないのも含めて。
でもまぁここはバッチスクリプトのスレなので、pingが通った=TCPもイケる、は間違いなのは別で調べて頂戴。
>>770
arp -a って…ギャグのつもりなのか?笑えない。
パブリックと誤検出した場合、当たり前だけどpingは返さない。
ドメインコントローラーが勘違いした場合、端末も勘違いすることがある。
クソな再起動手順がもたらす問題を回避するために…「全プロファイルでファイァーウォール停止」を要求されたらそりゃたまらんわ。
正しい再起動手順でやれば、そんな事態は一切おこらないってのにさ。
>>771
おまい、スレ違い。
ここはバッチスクリプトスレ。
過不足ない通信が可能かどうかを調べるバッチなりなんなりを使うのが主題。
実際にエラーが出て連絡を受けた人間が調査の手始めにpingを打つことは普通にある。
>>772
???WINS名前解決???
何世紀の人????
「少なくとも、相手がTCPを使ったサービスを実行できる状態にある」の言いに使ってるけどね。間違いじゃないだろ。
本当に相手のサービスそのものがダウンしているかどうかにはtelnetを使ったりするし。MS純正じゃないのも含めて。
でもまぁここはバッチスクリプトのスレなので、pingが通った=TCPもイケる、は間違いなのは別で調べて頂戴。
>>770
arp -a って…ギャグのつもりなのか?笑えない。
779デフォルトの名無しさん
2018/08/19(日) 21:11:07.45ID:t1KS71KR 頓珍漢な粘着男乙
780デフォルトの名無しさん
2018/08/19(日) 23:03:31.03ID:LYxx7csc pingが通る=回線が正常に繋がっている(途中で断線してない)
だろ
だろ
781デフォルトの名無しさん
2018/08/19(日) 23:06:16.33ID:LYxx7csc ところでSMBはWINS使ったっけ?
NBT(NetBIOS over TCP)じゃなかったっけ
NBT(NetBIOS over TCP)じゃなかったっけ
782デフォルトの名無しさん
2018/08/19(日) 23:30:42.84ID:P2diSE/Q はなし逸れるが、今の現場は大手の保険会社なのに10BASE-Tとかで驚くわ
20年間変わってないのかコレ?
まあ俺はしがない派遣IT土方だが
20年間変わってないのかコレ?
まあ俺はしがない派遣IT土方だが
783デフォルトの名無しさん
2018/08/20(月) 01:33:20.51ID:6ECfAniW スレタイ読めるか?
784デフォルトの名無しさん
2018/08/20(月) 01:43:26.60ID:r/LoJW6u 読めないから派遣なんだろ
785デフォルトの名無しさん
2018/08/20(月) 01:52:55.69ID:tHLrzyTk786デフォルトの名無しさん
2018/08/20(月) 06:28:09.44ID:iMQAgpc+ >>781
WINS と NBT はレイヤー違うぞ
WINS と NBT はレイヤー違うぞ
787デフォルトの名無しさん
2018/08/21(火) 09:38:25.46ID:OVCCyiik if スクリーンセーバーが起動されていなかったら
if 各種省電力モードになっていなかったら
if モニタの電源が消されていなかったら
if モニタの前に人が座っていたら
できる範囲でいいのでこれらの判定方法を教えてください
if 各種省電力モードになっていなかったら
if モニタの電源が消されていなかったら
if モニタの前に人が座っていたら
できる範囲でいいのでこれらの判定方法を教えてください
788デフォルトの名無しさん
2018/08/21(火) 12:42:43.53ID:tF5C/oBj pauseすれば人が見てるかどうかは判定できるが、
立っててもいいから駄目だなあ。
立っててもいいから駄目だなあ。
789デフォルトの名無しさん
2018/08/21(火) 12:45:10.41ID:QEEd6INS モニター叩き割ると多分全部常にfalseになるから解決できると思う
790デフォルトの名無しさん
2018/08/21(火) 20:46:58.06ID:voBQjli5 ぐぐると全部答え出てくるな
791デフォルトの名無しさん
2018/08/24(金) 19:24:58.18ID:PvZ4HV2M findstr はアホの子と言ってすみませんでした。
「^」や「$」は位置にマッチするメタ文字でした。
お詫びと訂正を申し上げます。
別件で、find /v "" が空文字列にマッチする件は納得いかないため調査中です。
「^」や「$」は位置にマッチするメタ文字でした。
お詫びと訂正を申し上げます。
別件で、find /v "" が空文字列にマッチする件は納得いかないため調査中です。
792デフォルトの名無しさん
2018/08/24(金) 20:28:21.96ID:HeVrgcXD findstrは対象文字コードの異なる場合のテキスト検索が難しい。
chcpして、バッチ自体の文字コードも合わせても、リテラルの検索パターン指定だとダメ。
そんな場合はpowershell Select-String
でやると良い
chcpして、バッチ自体の文字コードも合わせても、リテラルの検索パターン指定だとダメ。
そんな場合はpowershell Select-String
でやると良い
793デフォルトの名無しさん
2018/08/25(土) 11:04:29.30ID:55pEzwdh バッチファイルで上の階層に移動し
そのカレントディレクトリを変数に格納したいんです。
現在の記述
cd ../
set PARENT_DIR=%CD%\
これを一行にまとめる方法ってありませんかね?
for文やパイプラインを使っても駄目でした...
そのカレントディレクトリを変数に格納したいんです。
現在の記述
cd ../
set PARENT_DIR=%CD%\
これを一行にまとめる方法ってありませんかね?
for文やパイプラインを使っても駄目でした...
794デフォルトの名無しさん
2018/08/25(土) 11:36:40.35ID:RyVjXt1l 難しく考えすぎ、単純に&&か&で繋げばいんじゃね?
795デフォルトの名無しさん
2018/08/25(土) 20:37:51.27ID:RyVjXt1l796デフォルトの名無しさん
2018/08/26(日) 11:25:48.74ID:PFw0pViP 遅延展開でfor文ループをやってるバッチファイル(*.bat)があるんですが
このバッチファイルをメモ帳で開いて内容をクリップボードにコピーして
それをコマンドプロンプト画面に貼り付けたら同じように動作しますか?
このバッチファイルをメモ帳で開いて内容をクリップボードにコピーして
それをコマンドプロンプト画面に貼り付けたら同じように動作しますか?
797デフォルトの名無しさん
2018/08/26(日) 12:04:17.20ID:Kp4FoNKX なんか初歩的やなあ。
遅延展開だから最初にsetlocal enabledelayedexpansion
を書かいて&で繋げて次のコマンドを書ける。ただし%%は%に置き換える必要がある
遅延展開だから最初にsetlocal enabledelayedexpansion
を書かいて&で繋げて次のコマンドを書ける。ただし%%は%に置き換える必要がある
798デフォルトの名無しさん
2018/08/26(日) 13:07:23.92ID:ZzrAYlbi やってみればわかるけどコマンドプロンプトで
setlocal enabledelayedexpansionやっても効果ないよ。
cmd /v:onで遅延展開有効にしたコマンドプロンプト起動しないとだめ。
setlocal enabledelayedexpansionやっても効果ないよ。
cmd /v:onで遅延展開有効にしたコマンドプロンプト起動しないとだめ。
799デフォルトの名無しさん
2018/08/26(日) 14:01:30.30ID:Kp4FoNKX ああほんとだ。こんな感じにすればいいのね
cmd /v:on
set str=hoge &for /l %a in (0,2,10) do ( set str=!str!%a ) & echo !str!
cmd /v:on
set str=hoge &for /l %a in (0,2,10) do ( set str=!str!%a ) & echo !str!
800デフォルトの名無しさん
2018/08/26(日) 15:49:42.37ID:/S+ZLweZ 800!
このシリーズも、12まで言っても、新発見があるのね。
前(バッチファイルプログラミング質問スレ )のも含むと、すでに15スレ目か。
このシリーズも、12まで言っても、新発見があるのね。
前(バッチファイルプログラミング質問スレ )のも含むと、すでに15スレ目か。
801デフォルトの名無しさん
2018/08/26(日) 18:22:30.74ID:Kp4FoNKX 自分はこのスレになってから来たからまだ新参、過去スレ読まなきゃ
802デフォルトの名無しさん
2018/08/26(日) 19:11:50.77ID:qpELtL6e >>798
> バッチ ファイルでは、SETLOCAL ENABLEEXTENSIONS または DISABLEEXTENSIONS
> 引数は /V:ON または /V:OFF スイッチよりも優先されます。
> 詳細については SETLOCAL /? を参照してください。
じゃない??
cmd /v:on なんて使ったことがない…
> バッチ ファイルでは、SETLOCAL ENABLEEXTENSIONS または DISABLEEXTENSIONS
> 引数は /V:ON または /V:OFF スイッチよりも優先されます。
> 詳細については SETLOCAL /? を参照してください。
じゃない??
cmd /v:on なんて使ったことがない…
803デフォルトの名無しさん
2018/08/26(日) 19:12:48.89ID:qpELtL6e あ、もしかしてバッチとコマンドプロンプトでは動きが違うってこと??
804796
2018/08/26(日) 19:26:46.75ID:PFw0pViP805デフォルトの名無しさん
2018/08/26(日) 19:58:30.97ID:Kp4FoNKX ググらずにコマンドプロンプト開いて試せばいいんだよ
・遅延展開を使うために事前に cmd /v:on[Enter]する
・バッチのfor文は%%を%1つに置き換えてから貼る。
・do ループの処理は複数行で書けないので、( 処理 & 処理 & 処理 )と書く。(の後と)の前の半角スペースが大事
とりあえずそんなとこ。
・遅延展開を使うために事前に cmd /v:on[Enter]する
・バッチのfor文は%%を%1つに置き換えてから貼る。
・do ループの処理は複数行で書けないので、( 処理 & 処理 & 処理 )と書く。(の後と)の前の半角スペースが大事
とりあえずそんなとこ。
806デフォルトの名無しさん
2018/08/26(日) 21:34:45.08ID:ZzrAYlbi コマンドプロンプトでもdo の後に括弧つけて改行すれば
More?ってプロンプト出て普通に複数行書ける
> for %x in (hoge) do (
More?
More?ってプロンプト出て普通に複数行書ける
> for %x in (hoge) do (
More?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★5 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 日本が「世界で最も魅力的な国」1位に!✨「魅力的な都市」では東京が2位 「魅力的な地域」は北海道が7位に [煮卵★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で-福岡市 ★2 [蚤の市★]
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 ★2 [蚤の市★]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 高市の放漫財政が原因で日本国債大暴落!!!ザイム真理教崩壊へ!!! [252835186]
- 日経平均、49000円割れ 国賊高市を許すな [402859164]
- 東浩紀「日本はいままさに駆け引きをしている。」高市有事にピシャリ [834922174]
- んなっしょい🍬禁止🈲のお🏡
- 【悲報】ジャップってどの面下げて来年以降、戦没者追悼式典やる気なの🤔 [616817505]
