【.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/
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! 展開を使います。
2021/08/25(水) 12:37:01.24ID:sbFyoxUW
ヘルプ読んでから質問してね
2021/08/25(水) 15:31:20.26ID:Fod5ZYNl
CALL %FILENAME%
CALL "%FILENAME%"
職場のパソコン変えたら上で動かなくて下に修正することになったんだけど仕様変更あった?
2021/08/25(水) 17:21:04.65ID:sbFyoxUW
FILENAMEに区切り文字は無い?
347デフォルトの名無しさん
垢版 |
2021/08/25(水) 18:09:16.31ID:eN7VzoDp
echo onなら環境変数展開後のコマンドラインが表示される
なにがおかしいのかステップ実行で確認してから質問してくれ
2021/08/25(水) 18:59:42.87ID:rpvOn9yc
>>347
ステップ実行して抜き出したのがこれなんだ
2021/08/25(水) 19:00:54.62ID:rpvOn9yc
>>346
Onedrive同期してるフォルダーだからスペースとか今までなかったの増えてるかも
2021/08/25(水) 19:11:06.73ID:sbFyoxUW
区切り文字あればそれが原因でしょ
引数がフルパスなら上位フォルダもチェック
念の為にきくけどバッチファイルだよね
2021/08/25(水) 20:18:52.59ID:lzuDi78b
>>345
こういう輩は、なんで自分以外がおかしい前提で話をするんだろう?
2021/08/25(水) 21:55:38.08ID:Fod5ZYNl
>>351
こういうやつって掲示板にいる価値ないわ
2021/08/25(水) 22:12:01.88ID:HCLFH+1o
差し支えの無い範囲でFILENAMEの中身とかバッチを見せればいいのでは?
2021/08/26(木) 04:16:32.18ID:UZ8JqWyB
少なくともcmdにそんな仕様変更などあるわけ無いからね
2021/08/26(木) 04:17:53.32ID:UZ8JqWyB
潜在バグが表に出ただけで大騒ぎすな
全部bat作ったお前が悪い
2021/08/26(木) 06:46:44.11ID:dNXcmjRL
FILENAME がフルパスで環境変わってスペース含むようになったとかかな
2021/08/26(木) 16:42:40.02ID:LxJHntSN
>>342
%%%%a→%%a
2021/08/30(月) 09:59:58.73ID:2ApHZNp2
%FILENAME%に空白が含まれたら、最初の空白までが%1になるの当たり前じゃん
これを考え落とすって、8.3時代で頭の更新が止まったままの化石だね
2021/08/30(月) 10:57:48.15ID:cyOwxYqr
まあ空白とは限らないけどね
360デフォルトの名無しさん
垢版 |
2021/09/01(水) 12:25:22.16ID:BpsqJM8W
複数動画ファイルをバッチにドロップしてH265で再エンコードしたいです。保存先はドロップ元と同じです。自分で作ってみたのですがうまくいきませんでした。改善点を教えてほしいです
@echo off
%~d1
cd "%~p1"
type nul > ./files.txt

SET NAME_1=%~n1
SET NAME_2=%~n2
SET NAME_3=%~n3
SET NAME_4=%~n4
SET NAME_5=%~n5

:start
IF "%~1"=="" GOTO ffmpegstart
IF "%~x1" == ".MP4" GOTO add
IF "%~x1" == ".mp4" GOTO add
GOTO next

:add
echo file "%~1" >> ./files.txt

:next
SHIFT
GOTO start

:ffmpegstart
ffmpeg.exe -i "%~p1files.txt" -c:v libx265 -c:a copy -crf 22 -tag:v hvc1 "%~p1"%NAME_1%""_k_h265.mp4"
pause

ドロップせずに、パスを書いて実行したら成功はしました。
361デフォルトの名無しさん
垢版 |
2021/09/01(水) 12:38:53.45ID:3LGwAbit
たから echo onにしろっつってんだろ
2021/09/01(水) 16:04:27.85ID:rR7+iwTB
@echo off
:LOOP
if not exist "%~nx1" pause &exit /b
if exist "%~n1_k_h265.mp4" echo ERROR: 出力と同名のファイルが存在します&pause &exit /b
ffmpeg.exe -i "%~nx1" -c:v libx265 -c:a copy -crf 22 -tag:v hvc1 "%~n1_k_h265.mp4"
shift /1
goto :LOOP
2021/09/01(水) 17:15:47.13ID:79X4wBHs
>>360
ffmpeg.exe文の前にecho を付けて画面表示を見てみろ
質問の前にそれぐらい自分でやれよ
2021/09/01(水) 17:35:20.23ID:JwKVF6M3
@echo off って完成してからつけるものじゃないのか
最初からあるなんて随分と自信があるんだなぁ
2021/09/01(水) 17:36:38.68ID:3SVggb9G
だよな
366デフォルトの名無しさん
垢版 |
2021/09/01(水) 21:20:41.59ID:CWQ1EA8H
>>362
ありがとうございます!
2021/09/01(水) 21:32:18.07ID:79X4wBHs
丸投げ質問はやめてくれ
2021/09/01(水) 21:55:30.34ID:t7KCJs9B
なんだ、>>362でうまくいったのか
つまりエラーは変換先のファイルが存在しててffmpegでエラーが出たってことだったのか
俺はエラー内容が書かれてなかったんで他のことを考えてたよ
"あい うえお.mp4"とかパスに半角空白が無くて全角空白がある場合とかね
2021/09/01(水) 21:55:32.25ID:MGC13/Ge
はいw
2021/09/01(水) 22:51:40.87ID:79X4wBHs
-i のところやろ
2021/09/01(水) 23:03:16.29ID:UTT/foLD
例えば、デスクトップにショートカットを作る。
コマンドプロンプトを起動して、Ruby スクリプト・a.rb を実行する

リンク先
C:\Windows\System32\cmd@.exe /k "ruby C:/Users/Owner/Documents/a.rb"
(ただし、書き込めないので、間に@を入れました)

作業フォルダ
C:\Users\Owner\Desktop

例えば、a.rb 内では、以下のようにRubyスクリプト内で、
7zip を起動して、ドロップしたファイルのSHA256 ハッシュ値を求める

command = "C:/Program Files/7-Zip/7z.exe"
option = " h -scrcsha256 "

ARGV.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each do |full_path|
res = `#{ '"' + command + '"' + option + '"' + full_path + '"' }` # コマンド実行

puts full_path + res + ( "-" * 20 )
end

(ARGV は配列で、そこにコマンドライン引数・ドロップしたファイルパスが渡ってくる)

それで、ショートカットに、複数のファイルをdrag&drop すると、
コマンドプロンプトが起動して、各ファイルのハッシュ値が求められる

ただし、空白入りの実行ファイルのパスの前後を、"〜" で囲む事で、
Program Files の空白文字も処理できるが、
ドロップしたファイルパスに空白文字があると、
パスの前後を、"〜" で囲んでも、エラーになって処理できない
2021/09/01(水) 23:06:19.43ID:79X4wBHs
突然どうした?
2021/09/01(水) 23:11:28.11ID:79X4wBHs
ハッシュほしいならcertutilつかえば
374371
垢版 |
2021/09/01(水) 23:21:55.11ID:UTT/foLD
ハッシュ値を求めるのは、単なる例え。
ffmpeg の代わりに使っただけ

Ruby スクリプト内で、別のプログラムを呼ぶと、
ドロップされたファイルパス内の空白文字で、はまると言うこと
2021/09/01(水) 23:24:46.32ID:RTATUgNE
こんなところにまでruby基地がw
2021/09/02(木) 09:08:23.07ID:7LFIE/54
偉ぶりたい底辺コーダーや引きこもりがここぞとばかりにワラワラとw
377371
垢版 |
2021/09/02(木) 11:56:43.51ID:SBJQlu/e
>>371
に書いたように、コマンドプロンプトから、Ruby スクリプトを起動する方法では、
ドロップしたファイルパスに空白文字があると、バグる

PowerShell から、Ruby スクリプトを起動する方法では、
ドロップした複数のファイルパスを渡す方法が分からない

結局、以下のように、Ruby スクリプトを直接起動する方法では、
空白文字でも、複数のファイルパスでも、バグらない

ショートカットのリンク先
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/a.rb

puts ARGV # ドロップした複数のファイルパスの配列

sleep # 出力したコマンドプロンプト画面を閉じないようにする
2021/09/02(木) 12:14:08.51ID:ctEO1PZh
既視感あると思ったら >>156 に同じようなのがあるね
書き方似てるし >>362 と同じ人なんだろうか
start の有無の違いはなんで?
379デフォルトの名無しさん
垢版 |
2021/09/02(木) 12:46:43.02ID:6AISeI88
>>360
>>362
すみません、複数ファイルドロップしたら1つ目しかできませんでした!
あと、自分は全くプログラミングの勉強してなくて検索したものをツギハギでつくってるのでechoがどうとかよく分かってなかったです
echoをonにするとどうなんですか?
2021/09/02(木) 13:31:10.74ID:ctEO1PZh
>>379
https://www.google.com/search?q=windows+%E3%83%90%E3%83%83%E3%83%81+%E5%85%A5%E9%96%80
1ページ目に表示されてるサイト全部巡って読めば少しは分かるようになると思うよ
381371
垢版 |
2021/09/02(木) 13:39:27.82ID:SBJQlu/e
Ruby では、>>377
に書いたように、起動引数・ARGV は配列で、
そこに、ドロップした複数のファイルパスが入ってくる

出力
C:\Users\Owner\Documents\x
C:\Users\Owner\Documents\あ.txt

フォルダx と、ファイル・あ.txt
2021/09/02(木) 13:48:04.44ID:siHMRGTz
>>378
知らないけどffmpegが終わるまで待ちたいのでは
2021/09/02(木) 14:17:42.40ID:D5kjhyGc
>>379
前の質問もそうだが、どうして現象を説明しないの?
俺らが君のPCの画面やファイルを眺められるわけないじゃん
エラーなら、入力した内容やファイル内容やどこまで実行されててどういう状態になってるとか書かないとわからんだろ
あと362なら先頭行を削除して実行すればpauseで終了時点の状態がわかるだろ
2021/09/02(木) 14:24:25.53ID:D5kjhyGc
あと一個とか言ったけど、以前エラーになったオペレーションだと正常になったけど
新たに別のケースが出てきたってことか?
それとも以前エラーになったものは試してないってことか?
即答でありがとうなんて書けばこっちは正常になったと勘違いするだろ
あと、エラー状態は>>368の場合に該当しなかったということでいいか?
2021/09/02(木) 15:55:55.97ID:e/2zM0cp
>>379
コピペったバッチはShiftJISで保存した?
ドラッグ&ドロップするファイルの上位ディレクトリの名前かファイル名に半角スペースを含めてもう一度試してみ
ファイルやパスにShiftJIS外の文字や記号を含んでいるなら削除
それでもダメだったらファイル類を「パスのコピー」してここに貼ってみな
386デフォルトの名無しさん
垢版 |
2021/09/02(木) 19:03:44.33ID:lSTkj0Rg
>どうして現象を説明しないの?

馬鹿につきあって解答する馬鹿がいるからです
2021/09/03(金) 08:16:34.23ID:61QsYzlD
echoを理解できない初心者に説明しろと言っても無理
2021/09/03(金) 08:53:30.59ID:VqiIv6Pi
え、ちょっw(echo)
2021/09/03(金) 19:05:48.55ID:nhGnJ2O1
素直にコード貼るだけ全然優良でしょ
オレオレ用語使う、コード端折る、妙にプライドがある奴はマジで神経擦り減る
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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