X

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

■ このスレッドは過去ログ倉庫に格納されています
2020/08/15(土) 07:00:26.64ID:f3kW5kCx
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです

※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう

過去スレ
%13 http://mevius.2ch.net/test/read.cgi/tech/1542779527/
%12 http://mevius.2ch.net/test/read.cgi/tech/1489207631/
%11 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://pc11.2ch.net/test/read.cgi/tech/1197881068/
【.cmd】 バッチファイルスクリプト %1 【.bat】
http://pc11.2ch.net/test/read.cgi/tech/1178281991/
バッチファイルプログラミング 3.bat
http://pc11.2ch.net/test/read.cgi/tech/1148485555/
バッチファイルプログラミング 2.bat
http://pc8.2ch.net/test/read.cgi/tech/1104911889/
バッチファイルプログラミング質問スレ
http://pc5.2ch.net/test/read.cgi/tech/1040614686/
244デフォルトの名無しさん
垢版 |
2021/03/23(火) 00:45:55.21ID:5blhcD6i
>>242
ANSI.SYSな
2021/03/23(火) 02:32:13.78ID:QbxOC6mC
>>244
あい
246241
垢版 |
2021/03/23(火) 22:14:27.04ID:lgCFvm/4
>>243
現場の検証用PCなんでレジストリいじるのはNGでしたわw
でもこんな方法もあるんだね。参考になったよサンクス
2021/03/24(水) 14:20:41.98ID:yj6gJxmr
漏れは、WSL2 のコンソールが見にくいので、
Microsoft 製のColorTool で、配色テーマを変えてる

多分これも、レジストリをいじっている
2021/03/24(水) 16:41:09.17ID:cQ6WYo0q
俺は最近 Windows Terminal を使いだした
settings.jsonの設定が面倒くさい
でも >>128 のようなコピペのバグが無いので助かる
2021/03/24(水) 18:12:34.74ID:uMlO6v/T
>>248
ディレクトリを指定して開けないので使いづらい
2021/03/24(水) 19:38:25.90ID:d/Fx9DKH
>>249
-dで指定できない?
2021/03/24(水) 21:27:53.44ID:KCz6csQE
>>250
改めてアップデートしてみた試したけど
最近のバージョンだと、指定できるようになったんだな
さらに1.6でコンテキストメニューにデフォルトで登録されるようになってた

ただ、相変わらずライブラリやドライブで開くことはできないようだねぇ
2021/03/26(金) 15:46:43.29ID:9VbgFvvG
>>248
なるほど
そろそろ移行したほうがいいのかな
2021/03/26(金) 17:43:50.10ID:vSybir0X
ストアアプリという時点でゴミ
2021/03/26(金) 18:20:21.52ID:moYXNnAH
ストアアプリもマトモなやつは増えてきたよ
UWPのタブレットUI強制やら特大ウンチ機能制限やらがだいぶ撤廃されて、デスクトップアプリと大差なくなったからね、ようやく
まぁ遅きに失した感あるんですがね
2021/03/26(金) 20:02:56.96ID:Wy51+x+D
wt画面に複数ファイルD&Dすると全部表示されて便利だわ
コマンドの引数に使える
cmd画面だと一個だけだ
2021/03/26(金) 20:16:38.66ID:yyPdQtcN
ストアって時点でマトモとかそういう問題じゃないんだがな
OSにプリインストールでもされてれば別だが
2021/03/26(金) 20:25:35.57ID:yyPdQtcN
gitにPreinstallKit.zipってあるのな
ゴミは撤回しとくわ
2021/03/26(金) 20:41:58.26ID:Wy51+x+D
conhost.exe使ってれば
2021/03/26(金) 20:44:09.41ID:MahXm1Ia
こんなこと言うと怒られるけど早くOS標準にしてくんないかな
2021/03/26(金) 20:57:10.75ID:Wy51+x+D
まだ動作が若干あやしいぞ
カーソルがずれてたり
意味不明な文字が表示されたり
2021/04/03(土) 13:19:14.73ID:YB/KO+42
batファイルで並列処理するのってやっぱ無謀?
フォルダ内の画像を4並列で別の形式に変換したいみたいなやつ
2021/04/03(土) 13:43:34.69ID:vSOTAguS
>>261
過去ログにあるから漁れ
2021/04/03(土) 18:07:00.76ID:YB/KO+42
>>262
%10までのスレを「並列」で検索したけどそれらしいものは見つからなかったよ
2021/04/03(土) 19:12:28.03ID:vSOTAguS
>>263
https://echo.5ch.net/test/read.cgi/tech/1424858999/857
2021/04/03(土) 19:48:52.56ID:YB/KO+42
>>264
なるほど
tasklistでプロセスが生きてるか確認ってのは思いついたけどプロセス数を数えられるのは知らなかった
2021/04/03(土) 21:06:39.36ID:vSOTAguS
ただなあ
画像変換ごとき瞬時に終わるのでタスク監視でカウントしてる暇がないんじゃないかと
2021/04/03(土) 21:39:55.57ID:YWCwVZAz
何か昔書いたレスが掘り起こされてるw

画像だったら RalphaPlus を使っちゃうな
フリーでないシェア版だけど64bit版でメモリ不足になることもまずなくて、
32bit版では落ちてしまうような、大きめな16画像並列とかやっても問題ないし、
変換設定ファイルをいくつも作成できるので、バッチから呼び出すのにも
都合よくて便利、おすすめ
4並列程度ならフリーのでも多分問題ないと思う、並列処理の並列(多重起動)したいなら
シェア版が必要になるけど
2021/04/03(土) 21:40:52.86ID:YB/KO+42
>>266
最近の画像規格は変換に時間かかる上CPU使い切らないという事が多々あるからそこらへんは大丈夫だと思う
まだ試してないけど
2021/04/04(日) 12:25:17.64ID:BHN4NYpU
外部ツールに頼るんならpwshの力ちょっも借りてもいいのでは
echo file1 ... | % -parallel {コマンド $_; ...}
$_はfile_n、ジョブ数のデフォルトは5

もしかしたらプリインストールの古いやつでは動かないかも
270デフォルトの名無しさん
垢版 |
2021/04/09(金) 23:29:04.49ID:0EdakHoK
すみません、勉強不足なのですが教えていただけますでしょうか。
コマンドプロンプトで、出力結果から特定の値だけ抜き出したいのですが、
1行に表示される一部だけ 文字数以外で指定ってできないでしょうか?

ADのユーザ名を検索して日本語名だけ抽出したいのですが
dsquery user -samid "username" で検索して出てくる
"CN=XXX XXX,OU=ouname,DC=Dcname,DC=local "

CN= のあとのXXX XXXだけ変数にいれたいのですが出来なくて困っています。
2021/04/10(土) 00:43:06.37ID:lls/f8GA
for /f "delims==, tokens=2" %%i in ("CN=XXX XXX,OU=ouname,DC=Dcname,DC=local ") do echo %%i
2021/04/10(土) 11:17:28.20ID:QzAXiJxN
>>271
ありがとうございます。

そもそも自分のやりたいこと書かずにすみません、
自分の環境なのかうまくうごきませんでした。
batファイルでADから実行している利用者情報をCSVかなにかでエクスポートしようとしていまして
usernameだとログイン中のIDで表示されるので

dsquery user -samid %usernam%
とやって、cn=に出てくる日本語名だけを抽出したかったのですが、
皆さまだったらどのような方法をされるのでしょうか。
273デフォルトの名無しさん
垢版 |
2021/04/10(土) 12:23:55.67ID:bRqDVIlt
現在進行系の質問ありますけど追加質問させてください
for /F %A in ("テスト") do echo %A %A
としたときに「テスト テスト」が出力されますが
「テスト %A」を出したいときはどうすればいいですか?
274デフォルトの名無しさん
垢版 |
2021/04/10(土) 12:28:34.76ID:bRqDVIlt
連投すみません
for /F %B in ("テスト") do echo %B %A
もありなんですけど%のエスケープ知りたいです
2021/04/10(土) 13:02:42.59ID:lls/f8GA
こっちでは dsquery を試せないので推測で

@echo off
for /f "delims==, tokens=2" %%i in ('dsquery user -samid %USERNAM%') do set ver=%%i
echo %ver%
pause
2021/04/10(土) 13:04:44.20ID:lls/f8GA
バッチで実行して
2021/04/10(土) 13:10:22.83ID:lls/f8GA
よくわからんが %USERNAM% でいいの? E は?
2021/04/10(土) 13:13:27.40ID:IU1rFRRP
>>273
set テスト=%A
for /f %A in ("テスト") do call echo %A %%A%

バッチは%→%%と重ねる事で%のエスケープ出来るけどコマンドプロンプトでは効かない
環境変数なら
echo %cd% %^cd% "%^cd%" ^"%^cd%"
でエスケープ可能だけど
for変数は>>274しか無いかも
for変数はアルファベットが都合悪いならメタ文字以外の記号も使えるしwin10で試したらひらがなも行けた
2021/04/10(土) 13:39:39.87ID:ULgsRvVE
フィルタリング機能はおそまつなので
275のように一旦全部のユーザーをファイルに書き出してやったほうがいい
あとはテキストエディタでも表作製ソフトでもPowershellとかでもいいけど
正規表現でフィルターすればいい
というかdsqueryコマンドにフィルター機能ぐらいありそうなもんだけど
別のコマンドと組み合わせて使うならエスケープ文字は^なので
for 〜 in ('dsquery 〜^|dsget 〜')
2021/04/10(土) 13:46:42.23ID:ULgsRvVE
unicodeが使われてる可能性もあるので
安全性を取るならbatを使わずにdsqueryの出力を直接ファイルに書いた後に加工するのがいいかも
とかcsvとか言ってるのでどうせエクセルとかで使うんなら
そのまま"CN=〜"の出力を読み込ませたあとで加工とかも出来そうなもんだけど
2021/04/10(土) 14:16:22.00ID:ULgsRvVE
あれ全ユーザーとかじゃなくて一つのユーザーだけなのか
どっちにしろPowershellでやった方が楽だと思うよ
2021/04/10(土) 20:33:13.55ID:hTFrpgtD
>>272 こんな感じかなあ

 @echo off
 setlocal ENABLEDELAYEDEXPANSION

 for /F "tokens=1* delims=," %%I in ( 'dsquery user -samid %usernam%' ) do (
  set HEAD=%%I
  set TAIL=%%J
  :LOOP
  if "!HEAD!" == "" goto :NEXT
  for /F "tokens=1* delims==" %%I in ( "!HEAD!" ) do (
   if "%%I" == "CN" set CN=%%J
  )
  for /F "tokens=1* delims=," %%I in ( "!TAIL!" ) do (
   set HEAD=%%I
   set TAIL=%%J
   goto :LOOP
  )
  :NEXT
  echo.!CN!
 )
2021/04/10(土) 22:12:46.25ID:kfNVSQGB
>unicodeが使われてる可能性もあるので
これがあるからバッチでは原則処理しない
>>282みたいなことしてたらその内ひどい事になる
284デフォルトの名無しさん
垢版 |
2021/04/11(日) 00:53:55.03ID:X+5g0Z/F
>>275
ありがとうございます。%username%ですね Eが抜けました。
CSVはエクセルではなくてserverにOffice入れてないと、adidの日本語名にするのもちょっと骨でした。
ご指摘通りpowershellでできればいいのでしょうが
powershellは出来る人がいないのとバッチが多すぎて一部分を直して運用していました。
2021/04/11(日) 05:12:32.83ID:8j1o2avA
for /F %A in ("テスト") do @echo %A %^^A| more
2021/04/26(月) 14:11:50.54ID:FVrz/3IC
実行中のプロセスのCPUアフィニティを変更するコマンドは何ですか?

タスクマネージャの[詳細]タブで変更したり、
startコマンドの/affinityスイッチは知ってます。

ちなみに、目的はshogigui.exeとaperyに同じコアを使わせないことです。
2021/04/26(月) 16:39:41.34ID:5VqWgajG
Vector に LimitCPU とかあるけど使った事ない
2021/04/26(月) 17:25:33.86ID:vupwGLI3
実行中のプロセスで変更するコマンドって見当たらないな
タスクマネージャーとかのGUIアプリしか見つからない
俺も知りたいわ
2021/04/26(月) 18:44:26.08ID:g+6GvbLi
SET
 powershell -c "(get-process hoge).processoraffinity=1"

GET
 powershell -c "get-process hoge|select-object processoraffinity"
2021/04/26(月) 19:13:44.30ID:g+6GvbLi
GET/SETで分けることもないか(代入か否かで)
あと、同じプロセスイメージが複数ある場合の例(psはget-processのalias)
 powershell -c "ps chrome|%{$_.processoraffinity}
2021/04/27(火) 11:42:30.79ID:SlvFgNx9
>>289
できたー!!
dx
2021/04/28(水) 18:09:24.25ID:TBHOCaij
実行中のプロセスをキルした後、exeを起動する.batは組めないでしょうか?
ご教授お願いしたいです。
293デフォルトの名無しさん
垢版 |
2021/04/28(水) 19:31:14.30ID:Sz6ocakQ
実行中のプロセスを全部キルしたら多分Windowsがまともに動かなくなるぞ
2021/04/29(木) 12:33:19.43ID:UHw0q87H
taskkillしてstartすりゃいいんじゃねーの
2021/04/30(金) 13:18:51.37ID:QntBUF73
プロセスが自爆して自分の死後にexeを起動って意味?
2021/04/30(金) 13:34:43.19ID:KlpY5+7M
>>292
キルしてもすぐ消えないプロセスがあるから失敗するということかな
キルしたらもう一度プロセスが消えたかどうか確認しあればまたキルする
消えたら再起動

live2chは終了やキルしても消えない時がある(ゾンビ)
2021/04/30(金) 22:44:43.29ID:1FoMz0PJ
強制終了なんてするもんじゃないのよ
2021/05/05(水) 17:03:35.09ID:jBlPB1Jr
>>296
>live2chは終了やキルしても消えない時がある(ゾンビ)

アンデッドには効かなかったはず…
2021/05/05(水) 17:56:35.30ID:PPo4cFAu
killできない場合のことを考えておくことだね
じゃないと無限ループになる
2021/05/11(火) 09:43:15.42ID:2aTzy8bW
%0|%0
2021/05/11(火) 13:03:03.56ID:Ql061JAF
このスレってこういう呪文書く人多いよね
enabledelayedexpansionとかも呪文にしか見えないし
2021/05/11(火) 13:35:53.83ID:IBnoRfMr
にほんでいちばんさむいのはわっかないです
みたいな綴り
2021/05/11(火) 14:14:27.26ID:2aTzy8bW
稚内は平均気温は低いけど最低気温は内陸部に負けるね
2021/05/11(火) 14:46:36.64ID:XdIg8UA/
enable delayed expansion
305デフォルトの名無しさん
垢版 |
2021/05/11(火) 14:52:11.19ID:0OaQcACp
/d- とどっちがいい?
2021/05/11(火) 20:34:18.03ID:1ruivVGt
EnableDelayedExpansionって書けばちょっとだけ見やすくなる
2021/05/12(水) 02:11:31.96ID:Suipbxh4
CPU温度をコマンドで取得したいのですが、OS標準の方法は無理ですかね
WMI(ACPI)は固定値の温度が返ってきて取得不可でした
OpenHardwareMonitorもダメ(恐らく内部でWMIを呼び出してる)
当然ながらhwmonitorやCoreTempでは取得できますが、値をバッチで取り込みたいんですよね…
2021/05/12(水) 02:33:26.74ID:XehBH/T/
>>307
OpenHardwareMonitorReport
https://github.com/openhardwaremonitor/openhardwaremonitor/issues/776#issuecomment-313606249
2021/05/12(水) 20:32:09.46ID:Suipbxh4
>>307
コマンドラインに出力される以外はOpenHardwareMonitorの実行内容と同じ結果でした
1ボードマイコンのlinuxは
cputemp=`cat /sys/class/thermal/thermal_zone0/temp`
とかで簡単に温度が取れるのになんでじゃろ
2021/05/12(水) 20:32:24.17ID:Suipbxh4
>>308でした
2021/05/12(水) 21:20:49.69ID:MeE+nXbq
CoreTempでログ有効にして最終行取るとか
2021/05/12(水) 22:00:07.42ID:yHTntpLS
出力をgrepとsedあたりで拾えたけど、それじゃダメなの?
BusyBox入れておけばどちらも使える
2021/05/12(水) 23:05:17.82ID:Suipbxh4
>>311
ありがとうございます
CoreTempのログから取得することにしました
2021/05/14(金) 23:44:02.34ID:T4yhaoFz
おかげさまでCPU自動温度調節バッチができました
CoreTempのログ出力間隔がなぜかGUIの画面で設定が反映されないのでCoreTemp.iniを直接いじってLogInt=3;にしました
2021/05/21(金) 14:43:20.40ID:86NTjzBm
引数で✳︎1って書いて実行するとダメで
✳︎✳︎1と書くと実行してくれるというか
✳︎1として認識してくれる
こういうのなんて言うんだっけ?
2021/05/21(金) 15:45:05.64ID:PeQGb4Ft
エスケープ?
2021/05/21(金) 15:56:12.09ID:Ui9xkSyb
エスケープ文字でいいのかな?
どう伝えたらいいか迷ってました。
ありがとうございます!!
2021/07/29(木) 10:35:28.68ID:Sx47SrPe
dir *1* がおかしい表示をする
319デフォルトの名無しさん
垢版 |
2021/07/29(木) 11:36:44.20ID:tRu2KZQa
~1は付いてるだろ
2021/07/29(木) 17:13:03.84ID:YC90wu7g
dir/x *~*
やってみろ
2021/07/29(木) 19:38:39.37ID:a6W4XitR
>>318
>dir *1* がおかしい表示をする
うちもだ
何コレ
2021/07/29(木) 19:43:02.51ID:YC90wu7g
直ぐ上のレスぐらい読め
2021/07/29(木) 20:44:32.26ID:y5w0GI0N
ttps://www.atmarkit.co.jp/fwin2k/win2ktips/1200disable83/disable83.html
2021/07/29(木) 20:53:42.01ID:YC90wu7g
dir /b | find "1"
325デフォルトの名無しさん
垢版 |
2021/08/22(日) 10:21:12.87ID:ROFzyAkg
お教え下さい
バッチファイルでなんとかあれこれ作っているんですが、curlとjqコマンドを使ってJSONからURLを拾おうと思っています
curl -X GET %url% | jq -r .body.playback.video_link
そこで、video_linkというkeyにURLが入っているのですが、video_link[0]、video_link[1]とJSONによって何個か入っていることがあります
この時、[1]の方のURLが欲しいのですが抜き出し方が分かりません
もちろん[2]、[3]とURLが入っている事もあります
その時は一番大きい値から取りたいです

for文で配列を回して読んでnullの1個前を取る方法しか無いのでしょうか

ほとんど理解していないレベルですが、お知恵をお貸しいただければ幸いです
2021/08/22(日) 12:42:26.74ID:4kURdFV7
>>325
配列の最後の要素は[-1]で指定できるよ
https://stedolan.github.io/jq/manual/#ArrayIndex:.[2]
2021/08/22(日) 13:17:28.64ID:ROFzyAkg
>>326
無知とはいえ、目からウロコです
ありがとうございます、大変助かりました!

あと、もう一つお聞かせ下さい
上のコマンドの結果を変数に入れたかったので、for文でdo setしたのですが、jqを使うと動作しません
for /f "usebackq" %%a (curl -X GET %henkan% | jq -r ".body.playback.video_link[-1].url) do set urlhoge=%%a
とやるとエラーになります

またもやお教えいただけると助かります
よろしくお願い致します
2021/08/22(日) 13:25:20.71ID:ROFzyAkg
連投すみません
自己解決しました

パイプで別のコマンドを繋げてる時はカッコ内では | だけではなく ^| としなくてはならないのですね
2021/08/22(日) 15:01:46.57ID:QCLSPIvL
式評価が、行読み込み時とfor文の括弧内とで2回行われるので
2021/08/22(日) 16:39:15.67ID:AGm1+oJ3
>>327
(`コマンド`)やろ
"が一個なのも変
2021/08/22(日) 16:48:11.12ID:AGm1+oJ3
inもないし
2021/08/22(日) 19:09:07.18ID:ROFzyAkg
ああすみません、うる覚えてで打ってました
for /f "usebackq" %%a in (`curl -X GET %henkanurl% ^| jq -r .body.playback.video_link[-1].url`) do set m3u8url=%%a

これで無事に動きました
2021/08/23(月) 21:28:01.99ID:Tt89WUNP
>>332
う「ろ」覚えな
2021/08/23(月) 21:36:38.14ID:rdOjiFig
×うろ
○うる
2021/08/23(月) 23:16:48.35ID:0ziHLJ5Z
売る
2021/08/24(火) 07:13:42.95ID:ttKQ7L6u
うる覚えは誤り、または誤りから派生した方言だとされている

うろ 空洞
うろん 怪しい、疑わしい、乱雑
から来ているから 「うろ覚え」 が正しいよ

見せて → 見して
などと同様の変化でもあるだろう
見(い)せ(え)て(え) → 見(い)し(い)て(え)
と母音が前の音に引っ張られ変化するパターン
言い易くなるからか幼児語などに多く見られ、都会に比べての昔の田舎の人など知能の劣る者らが用いる傾向がある
2021/08/24(火) 07:54:41.61ID:7aPnDOA3
usebackqいらん
338デフォルトの名無しさん
垢版 |
2021/08/24(火) 11:06:35.68ID:A9/4ufwo
お世話になります。

---- boo.bat内容 -----
01:  @ECHO OFF
02:
03:  SET list=A B C D
04:  SET n=0
05:
06:  FOR %%a IN (%list%) DO (
07:    ECHO %n% : %%a
08:    SET /A n+=1
09:  )
10:
11:  ECHO %n%

----- 出力 -----
  0 : A
  0 : B
  0 : C
  0 : D
  4

出力が、
  0 : A
  1 : B
  2 : C
  3 : D
  4
とならないのはなぜ?
また、このような出力を得たい時はどうすればよいですか?
2021/08/24(火) 11:10:52.17ID:7aPnDOA3
set /? 読め
2021/08/24(火) 11:22:21.23ID:qugHDfsR
callでサブルーちんに飛ばせばカウントされるよ
for内は極力シンプルに
2021/08/24(火) 13:03:43.42ID:ttKQ7L6u
@echo off &setlocal enabledelayedexpansion
set "LIST=A B C D"
set N=0
for %%a in (%LIST%) do echo !N! : %%~a&set /a N+=1
echo %N%
pause &exit /b
2021/08/25(水) 00:21:43.26ID:NZXLvzYN
07:    CALL ECHO %%n%% : %%%%a
343338
垢版 |
2021/08/25(水) 08:35:00.27ID:CHwZclnY
340,341,342 ありがとう。
遅延?がどうこうって、勉強になりました。
単純な展開ですので、341の !var! 展開を使います。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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