【.cmd】 バッチファイルスクリプト %11 【.bat】 at TECH
[2ch|▼Menu]
[前50を表示]
900:100まで一気にやってしまうと負荷がひどいので、3つずつ走らせたいです FOR /F %%I IN (z,txt) do ( start /b hoge %%I ) これではすべて同時に実行されて困ってます



901:デフォルトの名無しさん
17/01/23 20:47:18.46 KnzUZKpX.net
>>861
取りあえず3つ起動して、それが終了するのを監視するとかかな
tasklist /fi "IMAGENAME eq hoge"
が無くなるまで次の起動を待つ

902:デフォルトの名無しさん
17/01/23 21:25:20.02 ltIH4vtA.net
同じ事で悩んだ記憶がある、こんなん如何でしょ?


FOR /F %%I IN (z,txt) do (
start /b hoge %%I
call :hogecounter
)
goto :EOF

:hogecounter
set /a num_hoge = 0
for /f "usebackq" %%i in (`tasklist /FI "IMAGENAME eq hoge.exe"`) do set /a num_hoge += 1
if %num_hoge% GEQ 5 (
echo hoge.exe 3つ以上実行中なので待機中... ---- %date% %time% ----
ping -n 2 127.0.0.1 1>nul 2>&1
goto hogecounter
)
exit/b

903:デフォルトの名無しさん
17/01/24 12:56:00.44 wPNJq+TP.net
>>862-863
回答ありがとうございます。とても勉強になりました
tasklistを使ってどうやって監視するのか考えていたんですが、こうやるんですね

904:デフォルトの名無しさん
17/01/24 20:29:53.92 /B8f83m4.net
startコマンドの第一引数はウィンドウタイトルと認識されるから、/b の効果は不明だね
start

905:デフォルトの名無しさん
17/01/24 20:30:49.14 /B8f83m4.net
start "" /b hoge %%I みたいに空文字でも入れておくといいかも

906:デフォルトの名無しさん
17/01/24 23:59:56.75 VxYK/9Zb.net
処理の終了を知らせるために
rundll32 user32.dll,MessageBeep
としてるんですが、鳴る音がランダムです

音楽プレイヤーを起動することなく特定の音を鳴らしたい場合はどう書けばいいですか?

907:デフォルトの名無しさん
17/01/25 08:04:52.52 JylBc2Qw.net
>>867
もし俺なら以下のようにする。

echo ^G^G^G

「^G」は実際にはコマンドプロンプト画面上で[Ctrl]と[G]を同時に押す事で入力できるアスキーコード7
(元々BEEP音を鳴らすための制御コード)を指す。だから「^G^G^G」なら、BEEP音が「ピッピッピッ」と3回鳴る。
パソコンによっては、ヘッドホンを繋ぐとBEEP音がヘッドホンからしか聴こえない機種もあるので注意。
(昔のパソコンは、ヘッドホンを繋いでいてもBEEP音は本体スピーカーから聴こえる機種のほうが普通だったけど)

908:デフォルトの名無しさん
17/01/26 02:22:00.01 xZjzKm01.net
プログラムは起動させても自動的に終了するのなら大丈夫では?
start "" /b /min sndrec32 /play /close "hoge.wav"

909:デフォルトの名無しさん
17/01/26 03:29:49.24 xZjzKm01.net
他スクリプトと併用した例
■start /minの代わりにWSHを併用(タスクバーにタブが出ない)
@if(0)==(0) @echo off
::ここから@endの間にBATスクリプトを記述し、最後はgoto :eofで終わらせる
echo 初回
cscript.exe //nologo //e:jscript "%~f0" "c:\media\foo.wav"
echo 2回目
cscript.exe //nologo //e:jscript "%~f0" "c:\media\bar.wav"
goto :EOF
@end
(new ActiveXObject("WScript.Shell")).Run('sndrec32 /play /close "'+WScript.Arguments(0)+'"',0,true);

■powershellを使ってBEEPで音階を演奏する
@echo off
:: beep(周波数,再生時間)
powershell -C "(262,294,330) | % {[Console]::beep($_,200)}"

910:デフォルトの名無しさん
17/01/26 03:42:07.64 xZjzKm01.net
訂正
powershell -C "(262,294,330) | %% {[Console]::beep($_,200)}"

911:デフォルトの名無しさん
17/01/27 00:


912:39:40.64 ID:igA7csKz.net



913:デフォルトの名無しさん
17/01/27 00:47:40.39 pF7zedh0.net
初心者です
batの書き方wikiのようなものはないんでしょうか
代表的なサンプルコードがたくさんあるサイトとか

みんな何を参考にコード書いてるの?

cmd help以外で

914:デフォルトの名無しさん
17/01/27 00:52:08.69 7NHk2TgN.net
バッチ 入門
バッチ 使い方
バッチ リファレンス

915:862
17/01/27 10:21:22.88 01h1aWf4.net
>>872
その方法をバッチファイルで実現するには、恐らく以下の方法が一番簡単だと思う。

(1) 黒いコマンドプロンプト画面で「echo echo 」の10文字(半角スペースを含む)をキーボードから打ち込む。
※この段階ではEnterキーをまだ押さない事!

(2) キーボード上の「Ctrl」キーと「G」を好きな回数だけ同時に押す。
※例えばバッチファイルの実行によりBEEP音を2回鳴らしたい場合は2回やる。

(3) そのまま「>>"」をキーボードから打ち込む。

(4) 編集したいバッチファイル名をエクスプローラの画面からコマンドプロンプト画面にドラッグ&ドロップする。
※例えば"C:\temp\sample1.bat"をエクスプローラの画面からドラッグ&ドロップすると、コマンドプロンプト画面に「C:\temp\sample1.bat」の文字列が転記される。

(5) そのまま「"」をキーボードから打ち込む。
※ファイル名を「"」(ダブルクォーテーション)で囲む理由は、ファイル名やフォルダ名に空白が含まれていても問題なく作業できるため。

(6) ここまでの一連の操作により、コマンドプロンプト画面では以下のように見えるはず。
「echo echo ^G^G>>"C:\temp\sample1.bat"」
それを目視確認できたらEnterキーを押す。これで作業完了。

(7) あとはメモ帳などのテキストエディタでバッチファイル編集を続行すれば良い。

916:デフォルトの名無しさん
17/01/27 16:42:05.37 o8MkOvQJ.net
>>873
おそらく、バッチの情報を1から100まで網羅してるページはネット上には無い。
ここの人たちは現役で使ってた人ばかりだから、習うより慣れろで成長してきた人

今から知りたければ、DOSが現役だった頃の20年〜30年前の参考書を読むといいよ
図書館に行けばいくらでもある。古い本でも内容は全く問題ない。
おもにPC-9801やJ-3100関連だが、コマンドの使い方や自由度については昔も今も変わってない。

会社で98のDOSを使わざるを得ないサラリーマン向けの初心者用書籍が、わかりやすい。

dateコマンドはフォーマットが若干変わったし、formatコマンドとかハードウェア制御系は
オプションが全然違うけど、書き方は同じ。そういう差異だけはネットで調べるとよい。

917:デフォルトの名無しさん
17/01/27 16:59:28.96 ss8+Q0ea.net
DOSとNT系のコマンドはかなり違ってるから
今だとDOSのは全然参考にならないと思う
(重要なforとかsetとか)
BATの概要や各コマンドの文法はヘルプを読む
コマンドのオプション/?のヘルプでも良いけど、
Windowsのヘルプで概要から全体像を把握したほうがいい
後は、ウェブで探すことになるかな
だが、まずは自分のしたいこと、興味のある処理をどうやれば実現できるのか考えて、
googleで検索していき徐々に知識を増やすことになるだろう
読めば全部わかる教科書とかいうものは多分無いだろうしね

918:デフォルトの名無しさん
17/01/27 17:06:49.37 M+jB2zw0.net
ビーフ音ってモーみたいな音?

919:デフォルトの名無しさん
17/01/27 17:08:36.86 coDtb1o3.net
裏技みたいなやり方はどうやって習得していったのか気になる

920:デフォルトの名無しさん
17/01/27 17:31:38.


921:29 ID:01h1aWf4.net



922:デフォルトの名無しさん
17/01/27 17:46:39.61 ss8+Q0ea.net
>>880
ansi.sysの組み込みで使えるようになった奴ね
懐かしい(いろんなプロンプトを作って遊んでた)
まあエスケープシーケンスって聞くと印刷で使うものって感じだったけど

ところで、windows10 Threshold 2でコマンドプロンプトにANSI/VT100互換表示ができるような記事を読んだ記憶があるんだが
実際のところはどうなのかな

923:デフォルトの名無しさん
17/01/27 20:53:22.87 xhE2/Vp0.net
>>879
言えてる、個人的にはここで初めて知った call の使い方
call hoge %%fuga%%
みたいなの

あとこれもここで覚えた
set /p <NUL=
と コントロールコードの 0x08 [BS] を組み合わせての進捗表示

924:デフォルトの名無しさん
17/01/27 20:57:37.23 ss8+Q0ea.net
DOSだとcallも外部BATファイルしか呼べなかったんだよなあ
式評価はもとより内部ラベルも呼び出せない
@echoもこれしかコマンドに@は付けられなかった

925:デフォルトの名無しさん
17/01/27 21:16:38.29 ss8+Q0ea.net
こういうのもここで覚えたよ
for /f "delims=0" %%I in ('cmd /u /c echo 〇') do set BEL=%%I
echo %BEL%

926:デフォルトの名無しさん
17/01/27 21:20:50.03 01h1aWf4.net
>>881
URLリンク(www.excite.co.jp) の件については俺も知らん。
何しろ現在まだWin7ユーザーで、Win10は一度も使った事がないからな。

>>883
そういやechoコマンドに@を付けられるようになったのは、MS-DOSのVer.5.0からだったっけ?

927:デフォルトの名無しさん
17/01/27 21:24:19.98 coDtb1o3.net
>>884
なんじゃこりゃ
凄い

928:デフォルトの名無しさん
17/01/27 21:36:09.67 xhE2/Vp0.net
>>884
すごい、どーいう仕掛け???


コマンドプロンプトのプロパティに「コンソールの新機能の詳細」↓があって
URLリンク(technet.microsoft.com)
読んでコンソールウィンドウの透明度の変更が
CTRL+SHIFT+Plus (+) or CTRL+SHIFT+mouse scroll up
CTRL+SHIFT+Minus (-) or CTRL+SHIFT+mouse scroll down
であることを知ったのはまだいい?として
CTRL+F
で検索ができるのを初めて知ったよ……

929:デフォルトの名無しさん
17/01/27 21:49:56.71 01h1aWf4.net
>>884
おぉ、その方法で環境変数%BEL%にアスキーコード7が1つ格納されるとはな。
だから>>868と同じ仕組みの事が実現できるわけだ。
>>875の方法やVBScriptのChr関数をうまく使えない人には、面倒でも利用価値があるかもな。

930:861
17/01/29 14:25:18.42 ddwWtq0w.net
>>868
音は鳴りませんでした
>>869
できました
>>870-871
できませんでした

一瞬起動するのが気持ち悪いですが>>869で妥協しますありがとうございました

931:デフォルトの名無しさん
17/02/02 16:41:44.39 2a/0H2Op.net
教えて欲しいのですが、バッチファイルでhostsファイルを上書きコピーしたり、一部を糀谷したりすることは可能でしょうか?
単純にコピーコマンドではうまく行きません。

932:デフォルトの名無しさん
17/02/02 23:15:37.


933:79 ID:LhAHr7Zi.net



934:デフォルトの名無しさん
17/02/02 23:27:36.20 rUH8Ic6o.net
俺はXPなので最近のは知らないけど
ユーザー権限の問題なのでは?
問題のファイルはWINDOWS\system32\drivers\etcの下にある
ここは一般ユーザー(Power Users,Users)資格では変更・書き込み不可になってるはず

935:デフォルトの名無しさん
17/02/03 11:18:52.82 qUN7oehH.net
>>880
それはNTだからじゃなくて、cmdだからだよ。

936:デフォルトの名無しさん
17/02/03 11:32:41.65 PzggaHL+.net
>>893
そりゃそうだけど、BATファイルからしてみれば関係なくね?

937:デフォルトの名無しさん
17/02/03 23:21:27.20 qUN7oehH.net
>>894
command.com起動すれば従来通り動いたはずだよ。
64bitだと動かないけど。

938:デフォルトの名無しさん
17/02/06 22:43:42.84 Dm4Nipmb.net
今更だが、WindowsNT系のイベントログを自動的にテキストファイルへ出力
(エクスポート)する方法としては、PowerShellインストール済の状態で
以下の3行をバッチファイル内で実行するのが俺には一番妥協できそうだ。

powershell.exe -command ("Get-EventLog Application | Export-CSV '%~dpn0_%COMPUTERNAME%_app(%DATE:/=%-%TIME::=%時点)_psh.csv' -Encoding unicode")
powershell.exe -command ("Get-EventLog Security | Export-CSV '%~dpn0_%COMPUTERNAME%_sec(%DATE:/=%-%TIME::=%時点)_psh.csv' -Encoding unicode")
powershell.exe -command ("Get-EventLog System | Export-CSV '%~dpn0_%COMPUTERNAME%_sys(%DATE:/=%-%TIME::=%時点)_psh.csv' -Encoding unicode")

以下の3行をバッチファイル内で実行する手もあるが、
時間がかかりすぎる上に英語でしか出力されないのが難点。

wmic ntevent where "(logfile='application')" list /format:CSV > "%~dpn0_%COMPUTERNAME%_app(%DATE:/=%-%TIME::=%時点)_wmic.csv"
wmic ntevent where "(logfile='security')" list /format:CSV > "%~dpn0_%COMPUTERNAME%_sec(%DATE:/=%-%TIME::=%時点)_wmic.csv"
wmic ntevent where "(logfile='system')" list /format:CSV > "%~dpn0_%COMPUTERNAME%_sys(%DATE:/=%-%TIME::=%時点)_wmic.csv"

939:デフォルトの名無しさん
17/02/07 23:49:52.03 OwFQ4nmk.net
command.comで16bitアプリが動いたらいいのに

940:デフォルトの名無しさん
17/02/08 01:50:38.96 QE6/hL5U.net
almond.com

command not found.

941:デフォルトの名無しさん
17/02/08 07:20:17.84 h1zz+gVt.net
>>896
wevtutil じゃダメなの?
URLリンク(technet.microsoft.com)(v=ws.10).aspx

942:890
17/02/08 16:12:37.67 45vPMFEy.net
>>899
今使ってるWin7 Pro x64マシンは4年以上前に買ったものだが、そのコマンドは初めて知った。
実際やってみると従来より処理結果が見やすい上に速いな。ありがとよ。

wevtutil qe Application /f:text /uni:true > "%~dpn0_%COMPUTERNAME%_app(%DATE:/=%-%TIME::=%時点)_weu.txt"
wevtutil qe Security /f:text /uni:true > "%~dpn0_%COMPUTERNAME%_sec(%DATE:/=%-%TIME::=%時点)_weu.txt"
wevtutil qe System /f:text /uni:true > "%~dpn0_%COMPUTERNAME%_sys(%DATE:/=%-%TIME::=%時点)_weu.txt"

943:デフォルトの名無しさん
17/02/15 04:47:51.68 aywwqEZo.net
%%i(ファイル名)が半角英数、"_" だけで構成されていたらという判定はどうやればいいんでしょうか

944:デフォルトの名無しさん
17/02/15 04:56:51.86 wUshnQbT.net
findstr /?

945:デフォルトの名無しさん
17/02/15 09:59:50.17 7bSa3oIc.net
>>884ってなんで?これと関係ある?

URLリンク(ash.jp)

> UnicodeのUCS-2の文字コード表は、UTF-16と同じです。
> UTF-16 3007 〇

946:デフォルトの名無しさん
17/02/15 12:14:52.43 Q79MmBL5.net
>>903
もう一つ例を出せばはっきりするかな
for /f "delims=N" %%I in ('cmd /u /c echo 三') do set TAB=%%I

947:デフォルトの名無しさん
17/02/15 14:00:41.73 fyxpm6Tl.net
>>903
その通り。半角文字「0」のアスキーコードを16進数で表すと30で、
BEEP音を出す制御コードのアスキーコードは07だからね。

948:デフォルトの名無しさん
17/02/18 09:27:34.31 aH8To


949:s2O.net



950:デフォルトの名無しさん
17/02/18 13:52:15.93 8EFqk4IF.net
>>906
三だと、何か、あるんですか?
アホなもので、教えてください。

951:デフォルトの名無しさん
17/02/18 13:58:40.90 np+iCDRO.net
>>907
この(過去)スレで初登場したオリジナルってことかな?
コード表を見ればわかるけど使える文字は結構限られてて、この「三」は0x30以外でTABとして使える珍しい部類かな

952:デフォルトの名無しさん
17/02/18 16:19:49.41 aH8Tos2O.net
>>907

>>903のURLだと「三」は"4E09"になってるだろ?
んで↓のASCIIコード表だと「N」は"4E"だから、「N」で「三」を区切ると"09"つまり「HT(水平タブ)」が残るってこと。

URLリンク(www9.plala.or.jp)

953:901
17/02/19 13:32:35.73 OLDLML6K.net
>>908
>>909
ありがとうございます。
アホの私に、丁寧な説明、ありがとうございます。

954:デフォルトの名無しさん
17/02/20 12:38:49.83 Yd+dsT91.net
社内のシステム管理者してます。
WSHかpower shellを勉強したいのですが、VBA多少わかるのでWSHがよいかと思ってたのですが、これから勉強するならpower shellのほうが良いのでしょうか?

955:デフォルトの名無しさん
17/02/20 12:46:25.36 DNbD6mo9.net
社によりけりだから会社に聞け

956:デフォルトの名無しさん
17/02/20 12:59:56.69 o4bNBCuM.net
自分はPowerShell好きなので聞かれたら答PSって言っちゃうけど
実際は組合せが必要になる場面もあるだろうしbatも含めて触れやすい所からやって行こう

957:デフォルトの名無しさん
17/02/20 13:21:52.61 aGrUDuyU.net
今後htmlやJavaに関わる可能性があるなら、WSH(JScript)が良いかも

958:デフォルトの名無しさん
17/02/20 14:02:23.91 H64DODQY.net
一通り、全部実用できるように、するしか無いのでは.

得意なものは、一つあるけれども、他のも使えますと言うのが、よろしいかと.

959:デフォルトの名無しさん
17/02/20 14:14:39.50 GNpZgzhH.net
鬼の全パターン回答

960:デフォルトの名無しさん
17/02/20 14:19:59.36 aGrUDuyU.net
最終的にどうするかじゃないだろ
学習する優先順位、つまりまず最初に何から勉強していくのか
が問われている

961:鬼?
17/02/20 15:40:20.74 H64DODQY.net
鬼?
でも、実務上は一通り、できたほうが、よろしいかと。

962:デフォルトの名無しさん
17/02/20 18:46:18.21 ybI95Kss.net
言語の選択もさることながら
レジストリ操作が出来ると良いかと
キーは同じだけど枝が違うヤツを
変えることもあるので

963:デフォルトの名無しさん
17/02/20 20:05:53.47 7yJYF54k.net
>>911
今更 WSH はないだろ
PowerShell は癖があるけど慣れれば全然楽だよ

964:デフォルトの名無しさん
17/02/20 20:22:08.30 ynZG7eTn.net
まだまだ使える! WSHプログラミング 〜 VBScriptのテストツールの紹介 (1/2):CodeZine(コードジン)
URLリンク(codezine.jp)

965:デフォルトの名無しさん
17/02/20 21:44:53.54 D++FG3XO.net
WSHはファイルに保存しないと実行できないのが致命的。

966:デフォルトの名無しさん
17/02/21 12:35:55.81 4H0MJuHo.net
.Netがハードル
C#使うとか覚えるとかで他でも使うなら良いがPSの為だけに.Net覚えるのはコスパ悪くない?

967:デフォルトの名無しさん
17/02/21 12:


968:44:43.11 ID:jPlNYKt3.net



969:デフォルトの名無しさん
17/02/21 12:45:57.01 BY3mJNCy.net
WSHはBATよりはましだがもう過去のものだし
PSはMSが広めようとするも全然使われてないし
これやったら絶対いいといった決め手はない
結局はどれに興味がわくかで決めるしかないのが現状

970:デフォルトの名無しさん
17/02/21 13:05:43.90 jPlNYKt3.net
>>925
結局、一通りマスターするしか、ないのよね。
決定的なもの、ひとつマスターすれば、okとは行かないのが現状。

971:デフォルトの名無しさん
17/02/21 14:15:03.94 y0kzTLQN.net
>>923
テキスト処理とか WSH でやる程度のことは .NET に頼らなくてもできるよ
お陰で -split 演算子と String.Split( ) みたいに似て非なるものが色々できてしまうわけだが...

972:デフォルトの名無しさん
17/02/22 20:10:23.63 mAYQQSaw.net
Windows7において二つのバッチファイルを同じフォルダ内に作る

・hoge.bat

(以下中身)
echo これはhoge.batです
pause

・hoge(A).bat

(以下中身)
echo これはhoge(A).batです
pause

保存した後おのおののバッチファイルを右クリックして「開く」を実行する。
当たり前だがおのおののecho文の内容が表示される。

ここまではいい。

次にhoge(A).batを右クリックして「管理者として実行」をクリックする。
すると、

「これはhoge.batです」

と表示されるではないか。
末恐ろしい・・・

973:デフォルトの名無しさん
17/02/22 21:19:44.12 L0zJ8/8i.net
ほえ〜、ファイル名に ( が入っていると「管理者として実行」にしくる場合があるのね

hoge.bat を
echo,all "%*"
echo,0 "%~f0"
echo,1 "%~f1"
echo,2 "%~f2"
echo これはhoge.batです
pause

hoge(A).bat のファイル名を hoge(A)(S(D).bat

にすると最初の ( で分割されてるっぽいのが見て取れる

hoge(A).bat の ( の前に1個以上半角or全角スペースを入れてやると、
そのファイル名なら問題ないみたい

なんで???

974:デフォルトの名無しさん
17/02/22 23:00:05.19 mAYQQSaw.net
バグかね?

975:デフォルトの名無しさん
17/02/22 23:56:41.49 0ijMuyId.net
"("を含むパス上にあるbatファイルを、「管理者として実行」で正常実行できない
URLリンク(social.msdn.microsoft.com)

976:デフォルトの名無しさん
17/02/23 00:16:59.94 OmWT2WV6.net
なるほど、batfile とついでに cmdfile も書き換えて....っと
レジストリいじると ( で分断されないや、勉強になります

977:デフォルトの名無しさん
17/02/23 03:57:43.76 5MDB4WX9.net
WMIC PROCESS GET /FORMAT:LIST | FINDSTR /R "CommandLine= Caption=" > "%~dpn0_%COMPUTERNAME%_プロセス一覧(%DATE:/=%-%TIME::=%時点)_wmic-findstr.log"

978:デフォルトの名無しさん
17/02/23 12:05:36.44 OfWDpqOl.net
条件によって括る括らないとかせずに全部括るようにすれば良かったのにな
バッチに限らずWinでのこの引数関係の不具合やハマりは沢山あるが
そうしていればほぼ全て解決してただろうに

979:騙し髪
17/02/24 02:03:32.35 bJGVi00E.net
これもバクじゃないから困る
systeminfo | findstr /i /r /c:"^OS バージョン"

980:デフォルトの名無しさん
17/02/24 10:39:00.57 y7jxU5gN.net
>>935
↓これで妥協するしかないのかな?
systeminfo | findstr /i /r "OS" | findstr /i /c:"バージョン"

981:デフォルトの名無しさん
17/02/24 11:34:02.28 YZGHPd2K.net
>>935
何でいきがって /r なんて指定してるんだ?

982:デフォルトの名無しさん
17/02/24 11:57:48.17 y7jxU5gN.net
>>937



983:findstr /? これの実行結果を読めば分かる。 要はsyteminfoコマンド実行結果の内、「OS バージョン」という文字列が 行頭にある行だけを正規表現で抽出したいというのが>>935の意図。 実際は以下のように記述するしかない感じだが… systeminfo | findstr /i /r "^OS" | findstr /i /c:"バージョン" ちなみに>>936は少し記述ミスがあるので無視してほしい。 また、実行結果の表記がverコマンドの場合と少し異なる点にも注目。



984:デフォルトの名無しさん
17/02/24 12:15:58.03 FJeAwGiZ.net
>>936
systeminfo | findstr /b /c:"OS バージョン"

985:デフォルトの名無しさん
17/02/24 13:24:30.97 IrOG+H9r.net
もっと困りそうなのが、引数(ファイル名)で使われることが多そうな全角スペースの取扱いだよ。

cmd と エクスプローラーで、半角スペースと同じように扱ったりそうじゃなかったりする。
エクスプローラーからのドロップやタブ補完なんかを行うと、半角スペースとは異なる扱いになるのに、
コマンド実行の際には半角スペースと同様の扱いをして、そのままではパスが通らないことがある。

たとえば、C:\test dir\test.txt (batやexeでもいい) があるとして、カレント・ディレクトリが C:\ の場合、
cd test dir はクォートなしで通るし、
cat test dir\test.txt も普通に実行できるけど、
dir test dir\test.txt は通らない(クォーティングが必要)。

全部クォーティングすれば問題にならないと思われるにも関わらず、
C:\test dir\test space.txt というファイルパス(全角スペースのみならず半角スペースあり)の場合、
エクスプローラーからコマンド・プロンプトへドロップした際、
先の C:\test dir\test.txt はクォーティングされないが、
C:\test dir\test space.txt だと、きちんとクォーティングされる。

色んなパターンが合って、上手く説明できないけど、
補完とかの挙動もおかしかったりするので、ちょっといじってみるとわかってもらえると思う。

986:デフォルトの名無しさん
17/02/24 18:08:43.97 S5p8nT+v.net
>>935
負けた気がするけど
systeminfo | findstr /i /r /c:"^OS バ..ジョン"

987:デフォルトの名無しさん
17/02/24 18:53:46.21 J9Egd7AE.net
パス区切りをバックスラッシュにしたやつ、
円記号とバックスラッシュを同じにしたやつ、
全角スペースをデリミタにしたやつ、
は土下座行脚、いや、焼き土下座行脚すべき

988:デフォルトの名無しさん
17/02/24 21:47:48.07 y7jxU5gN.net
>>939,941
そちらはどれも正常に機能するんだな。

989:デフォルトの名無しさん
17/02/24 22:06:52.03 cAJGTXKH.net
正規表現で日本語使うのに一々文字コードを確認しなきゃならないってのは大変
MSにはもっとマルチバイト言語圏に気を配って欲しかった

990:デフォルトの名無しさん
17/02/25 04:26:31.35 xGmZcvF/.net
systeminfo | findstr /i /r /c:"^OS バ"

991:デフォルトの名無しさん
17/02/25 09:03:13.40 5GrbAtXq.net
パスに含まれるスペースも問題を起こすけど、"["と"]"もこれまた厄介だ。

992:デフォルトの名無しさん
17/02/27 23:58:11.99 WTG5WMst.net
めっちゃスレチだけど、SSDってちょっと前まで寿命が短いって言われてたけど
いつの間にかHDDより寿命が長くなってるんだな。びびったわw

993:デフォルトの名無しさん
17/03/01 05:48:52.22 AsJGDaOR.net
新人がバッチファイルに興味を持ったらしく、遅延展開のことを聞いてきたので
まずお約束の「SETLOCAL ENABLEDELAYEDEXPANSION」の記述を教えたら
それだけでウンザリされたぞ。
「%」ではなく「!」で囲まなきゃならないことを教えたらさらにウンザリされた。
やっぱりとっつきにくいよなあ

994:デフォルトの名無しさん
17/03/01 12:07:40.17 e1g5jWjK.net
他の言語はある程度習得できたけど
バッチは何度やっても覚えられない

995:デフォルトの名無しさん
17/03/01 12:53:16.16 SJrJxNnQ.net
>>948
> まずお約束の「SETLOCAL ENABLEDELAYEDEXPANSION」の記述を教えたら
> それだけでウンザリされたぞ。
俺ならその時点でそんなやる気の


996:ない新人は放置する



997:デフォルトの名無しさん
17/03/01 13:11:32.18 ZEta6nTz.net
確かに、その段階で、うんざりするような人に、
教えたくは無いな。

998:デフォルトの名無しさん
17/03/01 14:45:21.65 XTrmDaeR.net
ただただ長ったらしいんだよ
SetLocal EnableDelayedExpansion
ってすればかなり反応も違ったのかも

999:デフォルトの名無しさん
17/03/01 15:21:29.24 XTrmDaeR.net
それと意識の違いがあるかもな
C#とかだったらどんなに複雑でも必死で覚えようとするだろうが
BATだとまあそこそこ使えりゃいいんだよって感じで片手間の労力しか掛けたくないんだろう
実際使う機会なんて、ifで条件切り分けて起動アプリや引数を変える程度だろう
それ以上になるなら、簡易なツールでも作ったほうがいいとなる
あとは、何でも質問してくる新人なんて付き合ってられんだろう
学校の延長じゃないんだし、BATに限らず、まずはマニュアルやヘルプやwebで調べて自分で学習することを覚えさせるべき

1000:デフォルトの名無しさん
17/03/01 15:25:56.41 TOh8r3Y7.net
俺としては遅延展開は遅延展開が必要になった状況になって初めて教えた方がいいと思うけど

わけがわからんけどとりあえず書いとくおまじないってのプログラム関係の解説に多いけど
そういうの本当にうんざりする。
おまじないなんてアホな事書くぐらいならきちんと説明しとけと

1001:デフォルトの名無しさん
17/03/01 19:10:44.78 SJrJxNnQ.net
>>953
こういう知ったかにもげんなりする
> 実際使う機会なんて、ifで条件切り分けて起動アプリや引数を変える程度だろう
そんなものに遅延展開が必要になることはほぼない

1002:デフォルトの名無しさん
17/03/01 19:15:14.05 XTrmDaeR.net
>>955
>>952も言ってるように、遅延展開が必要になった場面で
それでも使わなければならないのなら教えればいい
単に勉強として教えても身にはつかない

1003:デフォルトの名無しさん
17/03/01 19:16:27.03 XTrmDaeR.net
>>952>>954に訂正

1004:デフォルトの名無しさん
17/03/01 19:22:01.47 SJrJxNnQ.net
>>956-957
何で俺にアンカーしてるんだ?
>>954 はまあ正しいと思うし本当に必要になったかどうかは >>948 の所の新人に聞かなきゃわからんし

1005:デフォルトの名無しさん
17/03/01 20:34:12.60 novnWMTs.net
長い上に補完効かないからゲンナリしたんだろうと邪推、テンプレート的な何かを
用意してあげればハードル下がるんじゃないですかね?
補完が効くなら大した事じゃないだろうし

内容はたったこれだけだけど、右クリック→新規作成 にバッチファイルの雛形を追加してから随分楽になった>俺
@setlocal
@echo off
prompt $g
title %~n0
cd /d %~dp0

for /f "usebackq delims=" %%i in (``) do (
)

color 07
timeout 6
goto :EOF

:adminchk
whoami /GROUPS|find "High" 1>nul 2>&1
if errorlevel 1 (
color 4e
echo,このバッチファイルは 管理者権限 で実行してください.
echo,何かキーを押下するとバッチファイルを終了します.
pause 1>nul
color 07
exit
)
exit/b

今回なら 1行目に enabledelayedexpansion を↓追加したやつで

1006:デフォルトの名無しさん
17/03/01 20:35:34.84 novnWMTs.net
うを、「 ↓ 」消し忘れた orz

1007:デフォルトの名無しさん
17/03/01 21:10:31.50 9330vN7g.net
@echo offを使うコードは嫌い

ちゃんと動けば問題ないが、大抵どこかがおかしいのに自信満々で隠してる

1008:デフォルトの名無しさん
17/03/01 21:57:06.50 novnWMTs.net
スタンスの違いですかね、そんな風に考えたこともなかった

1009:デフォルトの名無しさん
17/03/01 23:08:51.35 yR2oLnRj.net
使い道が限られてるし
めちゃくちゃ便利って思うバッチの恩


1010:bがないと 覚えるキッカケにならないと思う あとはキッティングとかやらないと必要にならない



1011:デフォルトの名無しさん
17/03/01 23:22:58.59 kitmjsdZ.net
>>961
デバッグした後であれば、表示されて煩わしい部分(コメントとか)隠すぶんにはいいんでないの?
何のコマンドを実行しているかは、その説明をechoしたり、echo on を直前に記述したっていいわけだし。

1012:デフォルトの名無しさん
17/03/02 03:25:05.16 BRCb1ETq.net
@echo on
pilder on
Mazinger Go
@echo off

1013:デフォルトの名無しさん
17/03/02 05:28:42.72 pdyDswRT.net
@echo off
rem title "name"
goto :main

comment
USING: this.bat "hoge" ["foo" ["bar"...]]
何のバッチかとか使い方とか引数や変数の説明
基本的にREMは使わない

:mein
echo 俺は全部こんな感じ

1014:デフォルトの名無しさん
17/03/02 11:37:11.71 T2bzQ343.net
シェルスクリプトはタイプ数減らすために逆にエスケープ周りのルールが複雑化して全然生産性上がらないんだよな
デバッグもしづらいし
その点でVBSは良かった
文法は糞だけど

1015:デフォルトの名無しさん
17/03/02 17:09:23.49 3Z7pahnd.net
>>966
「:mein」は、「main」?

1016:デフォルトの名無しさん
17/03/02 17:10:26.85 3Z7pahnd.net
間違った。
「:mein」は、「:main」?
だ。

1017:デフォルトの名無しさん
17/03/02 18:22:16.37 s+qRP6Bf.net
>>967
複雑?
お前さんの知能が足りんだけじゃね? w
.cmd のエスケープの方がトリッキーだろ、正式なドキュメントもないし

1018:デフォルトの名無しさん
17/03/03 05:02:41.69 WTPXL6BV.net
delimsにダブルクォーテーションを使用することは出来ないですか?

1019:デフォルトの名無しさん
17/03/03 12:31:28.29 1c3U0vHr.net
>>962
エスケープすることで可能(forのオプションは囲むことは必須ではないため)
URLリンク(stackoverflow.com)
URLリンク(otnx.jp)コマンド別/for/

1020:デフォルトの名無しさん
17/03/03 12:34:06.93 1c3U0vHr.net
>>971 の間違いだわ、失礼

1021:デフォルトの名無しさん
17/03/03 13:12:34.59 WTPXL6BV.net
>>972
囲まなくてもよかったんですね。
勉強になりましたありがとうございます。

1022:デフォルトの名無しさん
17/03/05 12:48:27.31 4ixcbh2y.net
コマンドプロンプト

1023:デフォルトの名無しさん
17/03/05 12:50:43.60 4ixcbh2y.net
間違えた、すみません。

1024:デフォルトの名無しさん
17/03/05 13:58:00.83 7VmbrbTL.net
半年ROMれ

1025:デフォルトの名無しさん
17/03/06 09:55:26.77 cTPfG0tg.net
cmd終了のお知らせ

次期大型アップデート、Windows 10 Creators Updateの実像 - PowerShellが標準に、Linux環境も強化したWindows 10 Creators Update:ITpro
URLリンク(itpro.nikkeibp.co.jp)

1026:デフォルトの名無しさん
17/03/06 19:59:20.47 ZhaNpIEG.net
まじかよ…まぁでもまだいける

1027:デフォルトの名無しさん
17/03/06 20:25:53.65 ajpZLJux.net
cmd環境はサポート維持が表明されてるから安心して良いよ
むしろ危ないのはWSHの方

1028:デフォルトの名無しさん
17/03/07 10:57:03.69 yt35hC5o.net
>>978
塩田さんの記事か。
少し、ひっかかるものがあるけど。

1029:デフォルトの名無しさん
17/03/07 11:34:23.30 NGhUJ85m.net
>>980
記事を読む限りはcmd環境も維持されるみたいね
なんとなく安心

1030:デフォルトの名無しさん
17/03/08 16:42:00.84 yjHW4J+N.net
test

1031:デフォルトの名無しさん
17/03/08 16:42:42.42 yjHW4J+N.net
test2

1032:デフォルトの名無しさん
17/03/08 16:43:19.20 yjHW4J+N.net
test3

1033:デフォルトの名無しさん
17/03/08 16:44:30.11 yjHW4J+N.net
test4

1034:デフォルトの名無しさん
17/03/08 16:44:57.54 yjHW4J+N.net
check.

1035:デフォルトの名無しさん
17/03/08 20:25:28.66 22c2SBHy.net
del の外にごみ箱送りの削除コマンドを追加して欲しい
できるソフトはあるが、内部コマンドで

1036:デフォルトの名無しさん
17/03/10 20:40:22.23 f4ZS1b20.net
はは

1037:デフォルトの名無しさん
17/03/10 22:27:00.13 yR7vM1Ks.net
>>989
ひろし、ごはんだよ

1038:デフォルトの名無しさん
17/03/11 05:16:21.18 fFh0REPG.net
落ちる

1039:デフォルトの名無しさん
17/03/11 11:23:33.97 0VclosvM.net
落ちるー。

ミハル

1040:デフォルトの名無しさん
17/03/11 13:48:33.39 2LSSeyH1.net
次スレ
【.cmd】 バッチファイルスクリプト %12 【.bat】
スレリンク(tech板)

あとヨロシク

1041:デフォルトの名無しさん
17/03/11 13:55:01.66 +iqzxRFD.net
落ちゆく、スレにも、幸いあれ。

1042:デフォルトの名無しさん
17/03/11 20:19:37.53 +iqzxRFD.net
今は、落ちゆくスレとても、dat内にて、花さかせん。

1043:デフォルトの名無しさん
17/03/11 20:55:16.00 a53QpxuN.net
うめ

1044:デフォルトの名無しさん
17/03/12 05:37:51.15 59Ox3raF.net
梅一輪 一輪ほどの あたたかさ
             服部嵐雪

1045:デフォルトの名無しさん
17/03/12 05:51:14.15 FQp4yzuc.net


1046:デフォルトの名無しさん
17/03/12 11:27:49.81 1iqHgo3m.net
shutdown /s /f /t 0 ←Windowsを即電源断
shutdown /r /f /t 0 ←Windowsを即再起動(※現在セーフモードならセーフモード,通常モードなら通常モードで再起動)

1047:デフォルトの名無しさん
17/03/12 11:35:19.11 1iqHgo3m.net
あと6レスで今スレともおさらばか…

1048:デフォルトの名無しさん
17/03/12 12:15:48.13 eYHcL9Aw.net
2年かかったな

1049:デフォルトの名無しさん
17/03/12 13:02:15.60 59Ox3raF.net
梅の花散らまく惜しみわが園の竹の林に鶯鳴くも
                    少監阿氏奥島

1050:デフォルトの名無しさん
17/03/12 18:55:33.66 t+BguLGS.net
鶯谷の鶯嬢の鳴く声が聞こえてきそうだw

1051:デフォルトの名無しさん
17/03/12 20:22:26.13 1iqHgo3m.net
さぁ、このスレをシャットダウンしようじゃないか

1052:デフォルトの名無しさん
17/03/12 20:24:39.74 1iqHgo3m.net
>>993
次スレ乙

1053:デフォルトの名無しさん
17/03/12 20:54:33.04 1iqHgo3m.net
1000!

1054:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1839日前に更新/325 KB
担当:undef