[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/23 16:05 / Filesize : 297 KB / Number-of Response : 1017
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 07:00:26 ID:f3kW5kCx.net]
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです

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

過去スレ
%13 mevius.2ch.net/test/read.cgi/tech/1542779527/
%12 mevius.2ch.net/test/read.cgi/tech/1489207631/
%11 echo.2ch.net/test/read.cgi/tech/1424858999/
%10 peace.2ch.net/test/read.cgi/tech/1374205515/
%9 toro.2ch.net/test/read.cgi/tech/1335015478/
%8 toro.2ch.net/test/read.cgi/tech/1315844420/
%7 hibari.2ch.net/test/read.cgi/tech/1298873550/
%6 hibari.2ch.net/test/read.cgi/tech/1277465356/
%5 pc12.2ch.net/test/read.cgi/tech/1242268171/
%4 pc12.2ch.net/test/read.cgi/tech/1229955189/
%3 pc11.2ch.net/test/read.cgi/tech/1217860043/
%2 pc11.2ch.net/test/read.cgi/tech/1197881068/
【.cmd】 バッチファイルスクリプト %1 【.bat】
pc11.2ch.net/test/read.cgi/tech/1178281991/
バッチファイルプログラミング 3.bat
pc11.2ch.net/test/read.cgi/tech/1148485555/
バッチファイルプログラミング 2.bat
pc8.2ch.net/test/read.cgi/tech/1104911889/
バッチファイルプログラミング質問スレ
pc5.2ch.net/test/read.cgi/tech/1040614686/

655 名前:デフォルトの名無しさん mailto:sage [2022/02/06(日) 05:53:39.32 ID:ZVoj0wBD.net]
Param([Parameter(mandatory=$true)][String]$inputFile)
Add-Type -AssemblyName "System.Drawing"
try{
$img = [System.Drawing.Image]::FromFile($inputFile)
if ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Jpeg)) {
$mimetype = 'image/jpeg'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Png)) {
$mimetype = 'image/png'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Bmp)) {
$mimetype = 'image/bmp'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Gif)) {
$mimetype = 'image/gif'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Icon)) {
$mimetype = 'image/icon'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Tiff)) {
$mimetype = 'image/tiff'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Wmf)) {
$mimetype = 'image/wmf'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Exif)) {
$mimetype = 'image/exif'
} else {
$mimetype = 'image/unknown'
}
$w = $img.Width
$h = $img.Height
$img.Dispose()
}
catch{ $mimetype='unknown' }
echo "$mimetype`t$w`t$h"

656 名前:デフォルトの名無しさん mailto:sage [2022/02/06(日) 05:54:07.77 ID:ZVoj0wBD.net]

getDetailsOfでプロパティを取ってくる以外の方法
jpg/png/gifぐらいだけど

powershell ./test.ps1 "画像ファイルのパス"

プロパティだと拡張子に関連付けられたものになる
中身がjpgなのにファイル拡張子が.pngの場合とかある?

なお、batに埋め込みたいならググれば方法は出てくる

657 名前:デフォルトの名無しさん mailto:sage [2022/02/06(日) 09:33:19.21 ID:T20/oaZi.net]
>>647-648
ありがとうございます
最初、実行ポリシーが云々でエラーになったものの、ググって
powershell -NoProfile -ExecutionPolicy Unrestricted .\test.ps1 '%~1'
としたら動きました
シングルクォートにしないとスペースを含むパスでエラーになりました

> 中身がjpgなのにファイル拡張子が.pngの場合とかある?
バッチでリネームついでにそういった間違っている拡張子を正しいものに直したいと思いまして
image/jpeg とかを .jpg に変えたら面倒も無くそのまま使えそうです

powershell凄いですね。外部アプリ使わずに判別出来ちゃうんですね
WINEX32.DLL
https://www.vector.co.jp/soft/win95/prog/se478825.html
こういうのが必要なのかと思ってました
ただファイル一つ一つをバッチからpsを起動してたら遅いのだけが難点ですね
速さは重要ではないので構わないのですが
いっそ全部psで書けるスキルがあれば良いんですけどねー
バッチですら四苦八苦してる身としてはさくっと書ける人が羨ましいです

658 名前:デフォルトの名無しさん [2022/02/16(水) 16:36:49.58 ID:w27+Spzi.net]
初心者過ぎて分からないんだが



659 名前:Rマンド >nul 2>&1
if "!ERRORLEVEL!" == "0" 〜
ってちゃんと意味ある?

出力捨てるのは成功するから毎回リターンコード0になったりする?
[]
[ここ壊れてます]

660 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 17:40:22.47 ID:SGx0nl/1.net]
正常時に出力の無いコマンドはリダイレクトできないからエラーになるんじゃね。
異常時にコマンドがエラー出してもエラーになるから
結局、区別がつかない。

661 名前:デフォルトの名無しさん [2022/02/16(水) 18:08:47.78 ID:5G/Gik2e.net]
>>651
辞めといた方がいいか

前の処理が正常終了したら次に進むベストプラクティスってなんだろう

662 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 18:18:47.77 ID:t0Nu4cH6.net]
コマンドの復帰コードと標準(エラー)出力のリダイレクトとは無関係なので
ちゃんとコマンドが復帰コードを返していたら問題ないはず
errorlevel環境変数を見るのはちょっとリスクがあるけどわかっているなら問題はない
if errorlevel 1 〜
なら確実

663 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 18:26:54.82 ID:lGeZIdOq.net]
コマンド
if not errorlevel 1 echo ok

コマンド >nul 2>&1 && echo ok || echo fail



664 名前:デフォルトの名無しさん [2022/02/16(水) 18:31:31.49 ID:5G/Gik2e.net]
ifのパラメーターにerrorlevelがあったのね
確かに環境変数使うより良さそう

PC起動時に毎回開きたいアプリを順番(前後関係あり)に開いてくだけだから基本startコマンドなのよね

665 名前:デフォルトの名無しさん [2022/02/16(水) 18:32:09.18 ID:5G/Gik2e.net]
おーありがてえ

666 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 18:39:35.08 ID:IpLn/l6Q.net]
>>651
> 正常時に出力の無いコマンドはリダイレクトできないからエラーになるんじゃね。
どこからこんなアホな知識を仕入れたのか知らんが、そんな知識を開陳する度胸に感心したわ

667 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 18:44:42.98 ID:91qDUo1j.net]
>>655
if errorlevelは 以上 だから気をつけろよ

DOS時代の使い勝手重視だ

668 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 18:50:49.88 ID:t0Nu4cH6.net]
>>658
DOSだと、gotoしか書けなかったね

669 名前:デフォルトの名無しさん [2022/02/16(水) 22:29:00.93 ID:5G/Gik2e.net]
>>658
以上なのか…
勘違いしそうだったわ気を付けよ…

670 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 02:07:07.44 ID:UpXKcN5y.net]
これなんでこうなるの?

echo abc 行末|findstr "^abc"
一致
(echo abc 行末)|findstr "^abc"
一致
echo abc 行末|findstr "行末$"
一致
(echo abc 行末)|findstr "行末$"
不一致
echo abc 行末| findstr /r /c:"^abc 行末$"
一致
(echo abc 行末)| findstr /r /c:"^abc 行末$"
不一致

元はこういう感じでハマっててやっと原因突き止めたんだけど理由が分からん
(for /L %%j in (1,1,%i%) do for /f "delims=/" %%a in ('echo "%%B_%%j%%"') do echo %%~a
)|findstr "^001a\.txt$" || echo ok
因みに /x オプションも駄目だった

('echo "%%B_%%j%%"') の部分も元は ("!B_%%j!") で単独では展開されてたのにパイプ繋ぐと展開されずハマってた
パイプ繋いだら遅延展開無効化されるん?

671 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 02:58:56.00 ID:WlVIdNMt.net]
(echo abc 行末)|findstr "行末 $"
は一致する
スペースが入るみたいだね

672 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 03:21:58.43 ID:j5UZdGyh.net]
>>662
それだと、空白は文字列のOR扱いで、"行末"と"$"のどっちかってことになる
が、まあそういうことだね
echo onの状態で実行してみりゃわかる

673 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 03:38:00.04 ID:UpXKcN5y.net]
ありがとう
(echo abc 行末)|findstr /r /c:"^abc 行末 $"
これで一致したから半角スペース入ってしまってるで間違いないみたい



674 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 03:42:58.59 ID:j5UZdGyh.net]
echo onでどう展開されるかみればどうしてそうなったのかわかるよ

675 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 05:28:05.67 ID:UpXKcN5y.net]
>>665
当然echo onでも確認してる
例えばこんなの
for %a in (a b c) do (echo %a|findstr "b$")
echo onでの表示では %a | とパイプとの間にスペース入るけどechoの末尾にゴミなんて付かないのよ

元のバッチやコマンドプロンプトの入力で以下のようにスペース入ってれば末尾にスペース入るけど上記のように詰めて書けば入らない
for %a in (a b c) do (echo %a |findstr "b$")

676 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 05:50:10.39 ID:WlVIdNMt.net]
>>663
ん?
空白区切りってダブルクォートを無視するの?
"行末(sp)(sp)$" で不一致になるから "行末(sp)$" に一致してるんだと思ったけど

677 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 23:05:19.75 ID:J9914B5I.net]
>>661
scripting.cocolog-nifty.com/blog/2007/03/call_echo_offse_6ea2.html

678 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 18:44:29.79 ID:xURWaPVP.net]
同じアプリのファイルを複数起動していて
コマンドラインが同じになっているとき
閉じたいものだけ閉じる方法ってありますか?

679 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 18:45:11.42 ID:xURWaPVP.net]
すいません、コマンドラインでなくプロセス名でした

680 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:06:56.37 ID:zbdaU1gm.net]
>>670
全く同じexeを複数起動してるんなら、プロセスID指定しかないけど
プロセスID見たってどっちが消したいexeなのか判別できる?
・リスト表示
tasklist /fi "IMAGENAME eq xxx.exe"
・削除
taskkill /pid 9999

パスが違うとかならパス情報を見るとかでプロセスIDを特定できる
wmic process list full format:csv|findstr "C:\foo\bar\baz.exe"

681 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:12:59.55 ID:xURWaPVP.net]
>>671
ありがとうございます
パスは違うので、その方法でやってます
助かりました

682 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 22:00:00.64 ID:zbdaU1gm.net]
>>672
もう出来たとは思うけど、上のだとfindstrも一緒に検出されるので出した責任として訂正しとく
for /f "tokens=6 delims=," %%i in ('wmic process list full /format:csv^|findstr "C:\bin\INET\Jane"^|findstr /v findstr') do set pid=%%i
tasklist /fi "pid eq %pid%"

683 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 12:26:06.99 ID:2NOKllqN.net]
>>673
ありがとうございます!
頂いたコードもとても参考になります



684 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 16:12:21.37 ID:XLKEJl76.net]
アクティブウィンドウ名がわかればいいんだね
vbaでできるらしいが

685 名前:デフォルトの名無しさん mailto:sage [2022/03/10(木) 14:32:21.94 ID:53waehJr.net]
あるフォルダROOTの配下にフォルダ001〜フォルダ999があり、その中にはAAA,BBB,CCCという3ファイルがあるとします。
フォルダ001から999配下の全てのAAAをZZZにコピーするために
コマンドプロンプトでROOTフォルダで「for /r %i in (AAA) do copy %i %~pi\ZZZ」としたら求める結果になりましたが
これをバッチファイルに書くと構文エラーみたいなエラーがでます。

バッチファイルに書く場合どうしたらいいでしょうか。

686 名前:デフォルトの名無しさん mailto:sage [2022/03/10(木) 15:13:37.97 ID:jqA3dRQ6.net]
魔空空間では
%i in (AAA) do copy % という名前の環境変数に展開されて消えてしまうのだ!
すべての%を%%に書き換えて対抗しよう!
なおコマンドラインでも環境変数が定義されていたら展開されてしまうぞ
こちらは対処不能だキヲツケロぉ

687 名前:デフォルトの名無しさん mailto:sage [2022/03/10(木) 15:28:31.03 ID:23a2YeOc.net]
>>676
コピーするファイル数が膨大でなければバッチより2画面ファイラーの方が便利
ファイル検索して、反対側窓のフォルダーにコピー、移動する
dynaやafx

688 名前:デフォルトの名無しさん mailto:sage [2022/03/10(木) 15:52:45.58 ID:53waehJr.net]
>>677
ありがとうございます。うまくいきました!
理由まで教えていただきありがとうございました。


>>678
ファイラ、懐かしいです。からこれ20年くらい前??FDとか使っていたことがありますが、、、、また使ってみようかと思います。

689 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 02:42:22.51 ID:1/likOkq.net]
家の光回線をIPv4 over IPv6に変えたら、「VPN931でしょ?」ERRORが出て書き込めなくなった

試行錯誤の後、携帯回線を無線子機経由、テザリングで繋いでおき
「ネットワークアダプター」のページからイーサネット(有線)を無効にして書き込み、
書き込みが終わったら再び光回線を有効にするようにした

しかし、つい携帯回線に切り換えたのを忘れたまま動画を観てしまうようなことが何度もあり、
1回で月無料分のギガを使い切ってしまい、有料になったり速度制限がかかったりして不便&勿体ないので
なんとかバッチ処理出来ないかと思い、
「有線LAN 無効化 バッチ」で検索して見つけた下記のページを参考にしてバッチファイルを作ってみた

https://mseeeen.msen.jp/switch-network-adapter-enabled-in-windows-with-batch-file/

----------

@ECHO OFF
netsh interface set interface "イーサネット" disabled
ECHO 一時的に光回線(有線・イーサネット)をOFFにしました

timeout 30
netsh interface set interface "イーサネット" enabled
if ERRORLEVEL = 1 PAUSE

----------
上記を拡張子batで保存し、参考URL同様にショートカット経由で管理者権限で起動するようにしました。
※メモ帳で編集したとき、デフォルトでUTF-8→ANSIにすることを知らずに文字化けして上手く動かなかったのはお約束。

これで、書き込む直前にショートカットで起動すれば
30秒だけ光回線が切れ、wifi=携帯回線で書き込める
その後は自動復帰するので繋ぎ忘れが無くなった

もしもっと良い方法があれば教えてくださいm(_ _)m

690 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 10:55:59.83 ID:i3Z8TR4r.net]
ネットワークの有効無効を変える必要はなくて、単にどっちがデフォルトゲートウェイになるかを制御するだけで十分だよ
スマホ側にプロキシたてて、専ブラ(だよね?)からそのプロキシを使うように設定すれば常時5chだけスマホ側に流すこともできる

691 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 12:05:05.72 ID:vZQIGC81.net]
5chのipでルーティングの設定するだけでは?

692 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:36:04.21 ID:i3Z8TR4r.net]
理論的にはそうだけど実際5chが使ってるIP範囲調べたことあるかい?
CDN通してるから、取りうるIP範囲まるごとスマホに流したら5ch以外の多くのサイトのトラフィックもそっちに流れてデータ通信容量が消費されてしまう

693 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:41:51.25 ID:i3Z8TR4r.net]
途中で書き込んでしまった
消費されてしまうので、L3レベルでの経路選択は現実的ではない
なので一時的にまるごと切り替えてしまうか、URLを指定してシステム全体でプロキシ設定を行う、専ブラについてるプロキシ機能を使うとかのが良い
しっかりインスペクションして経路振り分けられるルーターを用意して設定できるならそれもありだが一般人向けではない



694 名前:680 mailto:sage [2022/03/12(土) 14:48:36.28 ID:1/likOkq.net]
>>681
流石ですね!あっという間に より良い方法を考えつくとは!

…ですが、専ブラに登録している全てのスレの新着チェック(=下り)は光回線で出来るので、
ギガ節約のためにも、無理にスマホに流さなくて良いのですよ

専ブラの上り(=書き込み)だけ携帯回線に流すバッチなんて作れますかね?
ヒントや参考になるURLでも構わないのですが

695 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 14:54:48.13 ID:1/likOkq.net]
PC再起動したら、 >>680 のバッチ実行時に「この関数を完了できません」が出て 狙い通りに動かなくなってしまった

仕方なく、以前と同じように 「アダプターのオプションを変更する」 からイーサネットを無効にして接続中

一番最初は 5chに書き込むたびにPCの裏に回り、 いちいち外しにくいLANケーブルを切り離していたから、
これでも 石器時代から稲作が出来るくらいには進化しているのだがw

たぶん名前が一致しなくなってしまった?のが原因と思うので、自分で対策してみますm(_ _)m

696 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 19:45:55.71 ID:i3Z8TR4r.net]
全自動で書き込みだけ他に流す仕組み考えてみたけど作らなきゃいけない部分もあるから質問者が実行できる気がしない(もはやスレチレベル)
スマホと書いてあるけど、安いPPPoEのプロバイダ契約するとか、donedoneや楽天、povoみたいな基本0円のSIM+モバイルルーターの回線と余ってるPCや仮想マシンを使っても良い

専ブラが使ってる5chのAPIの各リクエストが分離できる(事前に認証を行ったりする必要がない)と仮定すれば以下の仕組みで行けるはず
自宅内に5ch.netの各サーバーのリバースプロキシを立ててオレオレCA運用を行う
クライアント側でCAの自己証明書をOSに追加して、そのローカルIPをhostsで5chの各サーバに設定する
リバースプロキシ側で特定のパスのリクエストだけはスマホ側に用意したサーバーに投げる
スマホ側のサーバーはリクエストを受け取ったら、正しい5chのサーバーに投げて、その応答を返す

697 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 20:42:13.77 ID:dQfogYw2.net]
ま、5chはIPは5つしか無いけど
104.18.231.150
104.18.232.150
104.18.233.150
104.18.234.150
104.18.235.150
これはどの鯖でも共通(apiだろうがegg,kizuna,meviusだろうが)で
この5つのどれかをランダムで使う
なお、このIPは導入時から変わってない

698 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:52:20.19 ID:SoYXm1dj.net]
startでバッチファイルを実行すると、cmdウィンドウが残る
バッチファイルの最後をexit /B でなくexitにすると残らなかった

699 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 07:45:35.96 ID:5cZqh0Cb.net]
help exitに書いてあるでしょ

700 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 13:13:33.35 ID:dCVvmFB6.net]
最近ReactOSのソース読み始めたが勉強になるな
変な挙動のところは親切に#ifndef MSCMD_XXX_QUIRKSって書いてあってわろ
MS-DOS2.0のソースはMS公式が公開してるけどアセンブリは難解すぎて諦めた

701 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 06:55:33.59 ID:NhkQRxfw.net]
batにVBS仕込めるけど、JSは仕込める?
他に仕込めるものある?

702 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 12:54:10.76 ID:vpv2MT5y.net]
ググれよ
WSH(JScript)なら可、JavaScriptは無理だと思う
PowerShellも可

703 名前:デフォルトの名無しさん [2022/03/29(火) 16:59:49.39 ID:zndnyGpb.net]
Batになんか仕込むんならPowershellがいちばん簡単
VBSも上手いことやれば仕込めるし



704 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 17:48:10.85 ID:Da68lL6t.net]
>>631 みたいにすれば大体何でもイケるんじゃね

705 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 18:45:33.65 ID:CGMVb58j.net]
我が家では外部ファイルを使うのは邪道とされておるのだ

706 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 21:38:59.70 ID:6qHTZxky.net]
631みたいのはバッチ内のPowerShellでもっとスマートに書けるね
相変わらずコンソール消しても一瞬出てきて邪魔だけど
完全に消すにはvbsから呼んだりで結局2ファイルになる

707 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 02:50:31.03 ID:hpCvdrMf.net]
バッチ自体を初めて作っててクリップボードのテキストを[]で囲んだ名前のフォルダをデスクトップに作りたいんだけど
powershell get-clipboardでクリップボードから持ってくる
mdとかNew-Item NewDirecrtoryでフォルダを作る
までわかって|とか>で色々試して見たんだけどまあ上手くいくはずもなく
そもそも出来る事なのかもわからないから質問しに来ました!たっけてー

708 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 08:04:11.49 ID:VNoVBeip.net]
for /f "delims=" %%a in ('powershell clipboard') do md [%a]

709 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 08:07:00.01 ID:VNoVBeip.net]
for /f "delims=" %%a in ('powershell clipboard') do md [%%~a]

710 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 09:37:15.22 ID:hpCvdrMf.net]
>>700
ありがとう!
for /f "delims=" %%a in ('powershell clipboard') do md C:\Users\----\Desktop\[%%~a]
でいけました。

711 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 15:33:41.09 ID:MONKPJtx.net]
>>698
ちなみにPowerShellだけなら
powershell -c "Get-ClipBoard | ?{$_} | foreach {$dirName='[{0}]' -f $_; $dirPath=[IO.Path]::Combine([Environment]::GetFolderPath('Desktop'), $dirName); $null=[IO.Directory]::CreateDirectory($dirPath);}"

712 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 15:38:56.15 ID:XWBs+Kvf.net]
>>701
ab cd
a&b
とかでフォルダが作成できるかテスト

713 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:32:35.14 ID:5jbreqOF.net]
スペースのある文字列の扱いがわからんな
複数作ることを意図または許容するのか否かでちょっと違ってくる



714 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 22:48:33.20 ID:7tiScrqu.net]
cmdのmkdirで作るか>>702みたいに.NETのAPIで作るかWin2APIで作るかでも違ってくる

715 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 23:24:55.78 ID:hpCvdrMf.net]
色々方法があるけど何かしらcmdのみでは出来ないって事だけはわかった
面白いから少し勉強しようかなあ

716 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 00:56:37 ID:FFCnePh6.net]
batにドラッグするだけで複数zipを同じ階層に解凍してくれるbatが作りたいです。
圧縮の場合は
@echo off
path C:\Program Files\7-Zip;%path%
for %%i in (%*) do cd /d "%%~i" && 7z a "%%~i.zip" *
で出来るのですが、解凍の場合がわかりません。わかる方いれば教えていただきたいです。宜しくお願い致します。

717 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 02:56:14.25 ID:wBUYMDtu.net]
:start
if "%~1"=="" goto :EOF
7z.exe x "%~1" -o"%~dpn1" -y
shift
goto :start

718 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 16:24:25 ID:NCtDoq3M.net]
俺の勘違いだったらすまん
ドラッグで引数を渡す系だとバッチは括弧付きのファイル名が入った時点で破綻するような気がする
変なしがらみのないvbsやjs辺りで書いた方がいいかも

719 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 18:16:44.99 ID:qAvWbsmN.net]
括弧の他にも色々とダメ文字が頭に浮かぶな

720 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 20:34:57.53 ID:YeXmNplS.net]
複数選択のコンテキストメニューから展開した方がいいのでは

721 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:04:21.77 ID:neP5mDTX.net]
>>708を試したが駄目でした batにドラッグしても何も起こりません。
>>711
Claunchにbat登録だと、ファイルをモニタの縁にドラッグするだけで解凍できてとても便利なんです
ファイル選んで右クリック、多いコンテキストメニューから目的を探してクリック…というのよりbatドラッグがしたくて…。

722 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:49:13 ID:6g+y36jy.net]
echo on で何が起きているか調べろ

ちなみに何をドラッグしているのか?

723 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 21:59:36.90 ID:EPzG8fyD.net]
>>707
一年前に7-Zipスレで質問した人だろ
ゴミ箱への移動がどうとか言ってた人

まさかドラッグしてるのはフォルダじゃないだろな



724 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 22:29:24.28 ID:4ntMkwZZ.net]
どこのスレのことかと思いましたが、

7-Zip総合スレ Part 10
https://egg.5ch.net/test/read.cgi/software/1520243361/454-

のことでしょうかね。
たしかに、>>707は、この人かも。

725 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 23:09:37.54 ID:7iiWUl24.net]
ファイル名に半角スペースがあるとエラーになるよね

726 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 23:40:21 ID:neP5mDTX.net]
フォルダを圧縮したいのでフォルダドラッグしてます それはbatファイルでは不可能なんですかね

727 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 23:56:17.81 ID:cTakk7Wr.net]
これ以上触ってはいけないような気がする

728 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 05:57:00 ID:ZvCxX7eE.net]
>>712
もしかしてpathが足りないのじゃないか?

>>708のバッチの上に
path C:\Program Files\7-Zip;%path%
を加えてやってみろ

729 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 10:15:06.24 ID:Xjbe7mxo.net]
昔自作したやつがそう言えばどっかにあったな
色々試したけどzip名に全角スペースが含まれてる場合だけはどうにも出来なくて別のリネームバッチで半角スペースに置き換えてたわ

730 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 14:56:19 ID:D1hG0R6r.net]
list1.txt
田中
山田

list2.txt
一郎
次郎
三郎
に対して

xj.bat
@echo off
setlocal enabledelayedexpansion

call :crossjoin "" %*
exit /b

:crossjoin
for /F "tokens=*" %%l in (%~2) do (
if [%~3] == [] (
set x=%~1%%l
echo !x:__=,!
) else (
set y= %*
set y=!y: %1=!
set y=!y: %2=!
call :crossjoin "%~1%%l__" !y!
)
)
を動かすと

xj.bat list1.txt list2.txt (続く)

731 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 14:56:54 ID:D1hG0R6r.net]
田中,一郎
田中,次郎
田中,三郎
山田,一郎
山田,次郎
山田,三郎
を得ます

このバッチファイルを
list3.txt

田中
山田

list4.txt
名前
一郎
次郎
三郎
と、見出しが入ったファイルに対応するよう
改造していただけませんか

732 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 15:04:34.68 ID:akel0sHj.net]
for /i分にskip=1指定入れてみるとか

733 名前:721 mailto:sage [2022/04/16(土) 15:25:35.02 ID:D1hG0R6r.net]
ありがとうございます
今アンドロイドなので、PC使えるときに
試して報告します
ちなみに、こういう総当りって、awkやPerl
でも作れるものでしょうか?



734 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 15:43:07.54 ID:pX/6gg3y.net]
%%lとか気持ち悪いな
こういうこと?

for /f "skip=1 delims=" %%a in (list3.txt) do for /f "skip=1 delims=" %%b in (list4.txt) do echo %%a,%%b
pause

なんでcallしたり置換したり面倒臭い事してるのか分からん

735 名前:721 mailto:sage [2022/04/16(土) 15:58:27.63 ID:D1hG0R6r.net]
ありがとうございます
引用先の元ネタは、list1.txtなどの
対象ファイルがいくつでもいけます
そのためかと

736 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 17:13:22.10 ID:nVJ4wCm0.net]
やりたい事に対して一見して処理が意味不明
コードレビューすれば必ず突っ込みが入るパターン

737 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 17:39:10.95 ID:akel0sHj.net]
shiftとか知らんのかな

738 名前:721 mailto:sage [2022/04/17(日) 14:55:17.75 ID:wrqgojCl.net]
"tokens=*" を
"skip=1 tokens=*" に変えたら
見出しを飛ばしてデータを作ってくれました

だけど出力ファイルが大きいとかなり
時間がかかりますね

元ネタのところに行ってVBS版の作成を
依頼してみます
ありがとうございました

739 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 15:10:00.22 ID:jfoLRRUl.net]
ニコイチする度にcallしてたらそりゃ遅いわ
再帰でのcallやめるだけで結構速くなるよ

740 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 16:31:06.01 ID:A4GG7JI6.net]
ハッチ処理はあまりやりたくないから、
もっとかっこいい言語でかいて、バッチに変換する(コンパイル)できるといい
バッチ見えなく化計画

741 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 17:32:55.50 ID:iLyScgaF.net]
>>708さんのを使ってみました
ファイル名にスペースが入っていると展開されないのを回避することできますか

:start
if "%~1"=="" goto :EOF
"C:\Program Files\7-Zip\7zG.exe" x "%1"
shift
goto :start

742 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 17:39:26.89 ID:b4thkYbt.net]
上で"%~1"使ってるのに下では"%1"にしてる

743 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 17:41:48.86 ID:jfoLRRUl.net]
echoやpause使ってコマンド文がどうなってるのか確認したら?



744 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 17:50:28.17 ID:iLyScgaF.net]
>>733
できました
ありがとうございます

745 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 18:36:17.23 ID:i7g3Seu6.net]
いつまでこんなレガシー機能を使い続けるの

746 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 11:21:00.70 ID:PhhBhq60.net]
>>736
powerShellがダブククリックで使えないし

747 名前:デフォルトの名無しさん [2022/04/18(月) 11:27:46.45 ID:t3NwdXGg.net]
シンプルだからこそC++でジェネレートした.batを目視確認してから実行とかしやすいわけで

748 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 13:50:09 ID:OF8RRP9C.net]
>>730
どう書けばいいですか?

749 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 14:16:43.44 ID:74jROqLf.net]
すでにあるコマンドを使うというのは楽でいい
もう少し細かいことをしたいと思うと苦労するけど

750 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 03:57:14.74 ID:RFdms0p+.net]
PAUSEコマンド関連で質問です

バッチファイル中にPAUSEコマンドを入れるとそこでキー入力を待ちますが、
その延長で
・エクスプローラでダブルクリックされて起動された場合はPAUSEで止める
・コマンドプロンプトから起動された場合は止めない
ということをしたいです

PAUSEコマンド自体には何もオプション等は無いようなのですが、何か方法はありますか

環境変数等をみて動作を切り替えることができないか調べてみましたが、
どちらの方法で起動されても同一なようで、悩んでおります

751 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 05:42:50.53 ID:q7JwT6An.net]
>>741
>>446

752 名前:デフォルトの名無しさん [2022/04/20(水) 07:19:49 ID:Cwlkz3kl.net]
コマンドプロンプトを起動するときのショートカットに/k:autoexec.batを入れて
autoexec.batの中でset not_double_click=true
そしてダブルクリックで起動するバッチの中で
if not "%not_double_click%"=="true" pause
とか、どうかな

753 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 09:15:24.62 ID:RFdms0p+.net]
>>742-743
回答どうもです

なるほど、ショートカットを作り、そこに判定の仕掛けを入れる、という方式ですね

ツールを配布するときは、ショートカットの設定やコマンドプロンプトの設定を
するためのインストーラが必要になりそうですね…

バッチファイル単体でどうにか…と思いましたが、検討してみます



754 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 09:26:15.67 ID:q7JwT6An.net]
>>744
いやいや、そんな面倒なことしなくても
>>446 からの流れで %cmdcmdline% 見て判定する方法書かれてるでしょ
ID:lVKoKJNl

755 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 14:21:13.38 ID:asEavXVa.net]
昔の友は 今も友
俺とお前と(デンデン)大五郎

756 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 16:29:36.51 ID:7MR/4l0o.net]
ちゃん!

757 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 09:15:29.28 ID:vcjjnxKB.net]
>>739
setlocal enabledelayedexpansion
set n=0
for %%a in (%*) do set /a n+=1
if %n% GTR 64 >&2 echo ERROR: Args is Max limit 64 exceeded.&pause&exit /b 1
set A=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#$+-/:@[]_{}
set i=0
for %%a in (%*) do for %%b in (!i!) do for /f %%c in ("!A:~%%b,1!") do (
set "CMD_FOR=!CMD_FOR!for /f "usebackq delims=" %%%%c in (%%a) do "
set CMD_OUT=!CMD_OUT!,%%%%c
set /a i+=1
)
%CMD_FOR%echo %CMD_OUT:~1%
pause&exit /b 0
引数最大64個になってるけどfor変数のリストset Aを追加すれば増やせる
実際にどこまでforを多段に出来るかは知らない
コマンドの文字数制限とかあったような気がする

758 名前:721 mailto:sage [2022/04/24(日) 11:08:56.51 ID:IqM9oVR7.net]
>>748

頭に@echo offをつけやってみました

10万行ぐらいの出力ファイルを
ローカルHDDに作ると

721では30分、
748では5分以内
(いつ終わったか分からないため)
となりました

ファイルのお尻になんか1行
ついてるのはご愛敬

759 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 19:27:47.47 ID:lnSwl1A7.net]
そこまで変わるのか

760 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 23:16:01.47 ID:YqrbVxmA.net]
.>>721もよくわからないが>>748もよくわからなかった
こういうのよくないと思うの

761 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 23:53:10.74 ID:/3xv87ig.net]
この程度で分からんとか流石にそれはおまえの頭が悪すぎだろう

762 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 23:47:31.88 ID:3ou64YUW.net]
>>748の解説オナシャス!

763 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 00:02:39 ID:/dRsx73H.net]
>>753
引数の数だけ >>725 みたいなコマンドを生成して実行してるだけ
set "CMD_FOR=!CMD_FOR!for /f "usebackq delims=" %%%%c in (%%a) do "
set CMD_OUT=!CMD_OUT!,%%%%c
%CMD_FOR%echo %CMD_OUT:~1%
で察せ



764 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 00:45:33.71 ID:EhTMueYx.net]
いや特にその2行が意味不明で察せないんだわ

765 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 01:04:14 ID:/dRsx73H.net]
1、2行入れたList.txt用意してecho onで実行して追ってみればどこがどうなってるのかくらい池沼でなければ分かるでしょ

766 名前:デフォルトの名無しさん [2022/04/26(火) 2 ]
[ここ壊れてます]

767 名前:3:13:58.40 ID:AEcCnDU9.net mailto: フォルダの中にファイルが10個以上あったらタイムスタンプが一番古いファイルを削除する処理をバッチファイルでどう書くかどなたか教えろください。。 []
[ここ壊れてます]

768 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 23:29:20.25 ID:OAZlYJMq.net]
>>757
ジャバスクリプト使え

769 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 01:07:40.77 ID:c7tqZe1K.net]
dirでソートしたのをforでskipしてdelすればいいんじゃね

770 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 01:13:28.18 ID:4aF/byUR.net]
バックアップファイルでも溜め込んでるのかな?

771 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 01:13:59.63 ID:CxYG3qjN.net]
pushd, popdは出口exitがたくさんあったり、あちこちgotoしたりすると
つじつまがあわなくなることがある
そういう時は%cd%でフォルダ位置を覚えておき、最後そこに戻すほうが気分的に楽

772 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 03:00:29.08 ID:itKYtkFa.net]
>>757
for /f "skip=9 delims=" %%a in ('dir /a-d /b /o-d') do del "%%a"

773 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 18:14:04.80 ID:pviHRewB.net]
>>757
Ruby で書いてみた。
DryRun なので、実際にはファイルは削除されません

require 'fileutils'

# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
dir_path = "C:/Users/Owner/Documents/test/*"

# そのディレクトリ内の全てのファイルパス・更新時刻を取得する。
# [ ファイルパス, 更新時刻 ]の配列の配列を戻す
def collect_filepaths_and_mtime( dir_path )
Dir.glob( dir_path )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.map { |full_path| [ full_path, File.



774 名前:stat( full_path ).mtime ] } # [ ファイルパス, 更新時刻 ]
end

temp_ary = collect_filepaths_and_mtime( dir_path )

if temp_ary.length >= 10
temp_ary.sort_by! { |ary| ary[ 1 ] } # 更新時刻の古い順でソート
# p temp_ary

FileUtils::DryRun.remove( temp_ary.first[ 0 ] ) # 削除
else
puts "ファイル数は#{ temp_ary.length } です。処理するファイルはありません!"
end
[]
[ここ壊れてます]

775 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 11:23:44 ID:X7f5QGPR.net]
powershell
gci -File | sort -P LastWriteTime -D | select -Skip 10 | %{ del $_.FullName -Fo}

776 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 11:02:51.79 ID:usL/g0YR.net]
>>748
for /L 129個でやってみた
流石に途中で止めたけど以下で問題無く動いているようだから for の段数自体に制限はなさそう
文字数制限は過去ログで set が8190文字とか見たような
cmd.exe が1度にパース出来る文字数なのか setコマンドの制限なのかは分からないけど前者ならそこが限界になるね

@echo off
setlocal enabledelayedexpansion
set $$$=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#$+-/:@[]_{}。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚'\
set iii=0
for /L %%a in (1,1,129) do for %%b in (!iii!) do for /f %%c in ("!$$$:~%%b,1!") do (
set "CMD_FOR=!CMD_FOR!for /L %%%%c in (0,1,1) do "
set CMD_OUT=!CMD_OUT!%%%%c
set /a iii+=1
)
copy nul out.txt >nul
echo "%CMD_FOR%>>out.txt echo %CMD_OUT%"
%CMD_FOR%>>out.txt echo %CMD_OUT%
pause&exit /b

777 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 05:51:24.45 ID:QgRBAFzX.net]
Dracura配色にしたら目に優しくオサレになった
https://draculatheme.com/contribute
PowerShellとかWindows Terminalとかのテーマもいろいろある
https://draculatheme.com/

778 名前:デフォルトの名無しさん [2022/05/08(日) 05:37:23.76 ID:L9rI0dwl.net]
お助けくださいm(vv)m
タスクスケジューラにAdministrators最上位権限の6時間おき無期限タスクを設置しました
エラーなども解決し、やっと定刻に指定したタスクを実行するよう調整出来たのですが、対象となるregファイルの起動≒実行ではなく「次のプログラムを使って開く」的なダイアログ表示になってしまいます

OS上ではダブクリで処理していた内容なので盲点でした
スケジューラでregファイルを使用しレジストリの改変を定期的に行う場合、操作の記述はどのようにすれば宜しいでしょうか?
それか、当該regファイルを実行するためのバッチファイル記述を願いたいです
スケジューラでバッチ実行を指定する方法はネット上にも複数ありました

reg系は散々ググっても検索に出ないのが辛いですね
アドバイスお願いしますm(vv)m

779 名前:デフォルトの名無しさん [2022/05/08(日) 06:42:10 ID:21iaPdPG.net]
>>767
単に regedit %1 すりゃいい話じゃなくて?

780 名前:デフォルトの名無しさん [2022/05/08(日) 07:07:27.41 ID:L9rI0dwl.net]
レジストリ等は長年平気で触っているくせに、コマンド的な知識・技量ともに不足しており、コピペやポン入れ以外の微調整が出来ませんでした

XPか7時代に作った
----------
@echo off

echo.
echo ==========================================
echo 「高速スタートアップを有効にする」の無効化
echo ==========================================
echo.

rem -----「高速スタートアップを有効にする」の無効化 -----
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Power" /v "HiberbootEnabled" /t REG_DWORD /d "0" /f

pause

exit
----------
を発見し、そのままreg用バッチとして該当箇所コピー入れ替え→余裕のタスク発動→regも無事改変されました
元のソースがあるからこその応用ですが、スレをお騒がせして申し訳ありませんm(vv)m
コピペ文化は自業自得ながらも辛いものがありますね

781 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 23:03:26 ID:gcxSlYEt.net]
フリーランスに立ちはだかる「常駐」の壁。慣例を打ち壊し、
“テレワーク”案件3割→8割へと成長を遂げた「クラウドテック」の軌跡

リモートワーク求人専門サイト「プロリモート」がリニューアルオープン、
業務委託契約の求職者と企業をマッチング

1/3以上が採用につながる高マッチング率、リモートワーク×エンジニア・デザイナー専門の
人材紹介サービス「ReworkerAgent」正式リリース場所からも時間からも自由な働き方を実現!

『ReWorks(リワークス)』リモートワーク特化型転職サイトとして 3月5日 リニューアル

副業・兼業マッチングサービス「クラウドリンクス」登録者数2万人突破
中小企業で進む副業人材の採用、96%が継続採用を希望

茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金

長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給

フリーランスが活用できる「最大1,000〜3,000万円・補助率50%〜75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説

782 名前:デフォルトの名無しさん [2022/05/19(木) 11:35:25.20 ID:aWExf7Ea.net]
C:\Freesoftというフォルダにtest.rarというファイルが置いてあって、
それをwinrarの64bit版で
Z:のルートにフォルダを作らずそのまま解凍させるというようなbatファイルが欲しいのですが
誰か記述例を教えてください。
当方batファイルに関しては無知です

783 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 12:12:20.87 ID:aAlRquen.net]
>>771
winrarの64bit版はどこにあるの?
そのパス名がわからないと記述例が書けない



784 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 14:15:05.74 ID:Rn3o2leA.net]
Ruby スクリプト内で、7-zip を呼び出す場合、
dest_dir に、a フォルダが作られて、その中に再帰的に階層が作られる。
ここで、aフォルダが作られず直接、tmp フォルダ以下へ展開されるオプションは、7-zipでは探せなかった

zip7_exe = "C:/Program Files/7-Zip/7z.exe"
archive_path = "C:/Users/Owner/Documents/test/a.zip"
dest_dir = "C:/Users/Owner/Documents/tmp"

# Program Files には半角空白があるので、"〜" で囲む。
# x で解凍する。-o で解凍先のフォルダを指定する
puts %x("#{ zip7_exe }" x -o#{ dest_dir } #{ archive_path }) # 解凍

つまり、コマンドプロンプトでは、
"C:/Program Files/7-Zip/7z.exe" x -oC:/Users/Owner/Documents/tmp C:/Users/Owner/Documents/test/a.zip

ここでの注意点は、Program Files には半角空白があるので、"〜" で囲む事と、
-oC:/ の、-oとC:/の間に、空白を入れない事

ここで、C:/Program Files/7-Zip を、Windows のユーザー環境変数パスに追加すれば、
絶対パス無しで、7z コマンドを使えるので、
7z x -oC:/〜 C:/〜 と書ける

もし、xではなく、e オプションを使うと、
dest_dirにアーカイブの階層をフラットにして、すべてのフォルダ・ファイルを展開する!
フォルダ構成を無視して解凍する!

限定的な使い方だが、アーカイブが再帰的なフォルダ構成ではない場合には、
これで、aフォルダが作られず直接、dest_dirフォルダへ展開できる!

RAR は試していないが、a.zipの代わりに、a.rarとすれば、
拡張子から自動判別して、解凍できると思う

785 名前:デフォルトの名無しさん [2022/05/20(金) 09:45:16.10 ID:lLlVMTfc.net]
>>772
C:\Program Files\WinRARのフォルダの中にWinRAR.exeがありますが
別に7zipででもzipでもrarでもかまわないという感じです。

>>773
ありがとうございます。
すいませんがこちらの勘違いで置き場所を間違ってたので変更させてください。

Yドライブ(外付けハードディスク)のsoftというフォルダにabc.zip(ファイル名は仮の名前)
というファイルがあるとして
「Y:\soft/abc.zip」
このabc.zipをZドライブ(RAMディスク)上にbatファイルダブルクリックで解凍したいです。

解凍の際にそのまま解凍でもフォルダを作ってそこに解凍ででもどちらでもかまわないです。
7zipはさっきインストールしました。

7zipと winrarはともに一時ファイルの作成場所をZのtempフォルダに指定してあります
「Z:\rartmp」←こんな感じ。

この場合のbatファイルはどうなりましょうか?

なぜbatで解凍したいかというと、某フリーソフトなんですが更新が頻繁にあって、更新の通知に対してYESを選ぶと小さいサイズの
ファイルを6000個以上書き込むみたいで、更新するのに20分ぐらいかかります。

それだったら更新の通知が来るたびにキャンセルして公式サイトから最新版のzipファイルを入手して
RAMディスク上に解凍したのを起動させたほうが、短い時間ですむんじゃないかという考えです

786 名前:773 mailto:sage [2022/05/20(金) 12:29:11.62 ID:SIlSZC9T.net]
773 に書いてあるけど、
Program Files には半角空白があるので、実行ファイルの絶対パスを、"〜"で囲む

"C:/Program Files/WinRAR/WinRAR.exe" 引数1 引数2

ここで、C:/Program Files/WinRAR を、Windows のユーザー環境変数パスに追加すれば、
絶対パス無しで、WinRAR コマンドを使えるので、
「WinRAR 引数1 引数2」と書ける

ダブルクリックで起動したいのなら、
デスクトップにショートカットでも作れば?

例えば、773 のRuby スクリプトが、
C:/Users/Owner/Documents/Ruby/script.rb にある場合、

ショートカットのリンク先
C:\Windows\System32\cmd.exe /k "ruby C:/Users/Owner/Documents/Ruby/script.rb"

これは、コマンドプロンプト・cmd.exe を起動して、
ruby コマンドで、script.rbを実行する
(注意! 書き込めないので、cmd を英小文字に変換して下さい)

他には、VBScript でも、ダブルクリックで起動できたと思う。
漏れは、bat は知らないから、バッチファイルをダブルクリックで起動できるかどうかは知らない

7-zip のオプションで、一時ファイルの作成場所の指定も、見たような気もする。調べて下さい

ただ、7-zipの7z.exe はコマンド用じゃなく、画面操作用だから、
必ず、解凍先フォルダは空の状態で始めて下さい!
そこにファイルがあると、同じ名前の場合に、上書きしますかとか聞かれて、コマンドが止まる

だから本当は、7-zipのコマンド用実行ファイルを使った方がよいかも

787 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 20:38:33.57 ID:8qofalUL.net]
バカの話は必ず長い (宝島社新書) 櫻井 弘

788 名前:デフォルトの名無しさん [2022/05/20(金) 20:50:08.11 ID:zxJBX/+G.net]
と、バカが申しております。

789 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 23:38:55.76 ID:MePC0rUW.net]
バカって言う人は自分がバカなんだよ?
幼稚園児でも知ってるのに

790 名前:デフォルトの名無しさん [2022/05/21(土) 06:37:24.42 ID:55Td3nWK.net]
と、幼稚園児が申しております。

791 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 06:53:52.00 ID:/PQRaHnB.net]
ブログでやれよって感じ

792 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 18:17:57.65 ID:RDTYjvSl.net]
rarを解凍する機会なんてそんなないのにbatが欲しい?しかもbatファイルに関しては無知?妙だな…

793 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 07:47:47.45 ID:Lvn387tn.net]
forのin部で wmic を使って文字列取得しようとするとdo以後のコマンド類がバグる
for /f "tokens=2 delims==" %%a in ('wmic process where "name=\"hoge.exe\"" get CommandLine /value 2^>nul^|find "CommandLine"') do set RUNEXE=%%a
と最小限に留めたらecho on でプロンプトが削れて表示は少しおかしいものの一応動作はした
でも「バグってるものがたまたま動いてるだけ」の状態が心情的に嫌なので代替手段があれば教えて欲しい
やりたい事は特定のexeが実行中か否か
D:\app\a\hoge.exe が実行中かどうかを調べたいとして
D:\app\b\hoge.exe のような別ディレクトリにある同名のexeは実行中でもOK
tasklistだとhoge.exeが稼働してるかどうかは調べられるけどどのディレクトリのモノまでかは特定不能のよう



794 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 07:58:02.47 ID:Lvn387tn.net]
forで取らずにリダイレクトして一旦TMPファイルに書き出せば良いんだろうけどなんか負けた気がするのでそれは最終手段

795 名前:デフォルトの名無しさん [2022/05/23(月) 09:22:19.13 ID:vgqZRn8w.net]
パイプを犯人扱いしてfor内でifしちゃうのもありかな?

あと細かいけど"set RUNEXE=%%~a"としないとスペースとかで死ぬ

796 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 09:32:45.04 ID:Lvn387tn.net]
>>784
パスにスペースを含む場合、%%~aが利かない
頭の"だけ除かれてケツの"だけが残る罠
あとパイプ無くてもバグる

797 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 12:58:34.94 ID:Lvn387tn.net]
自己解決
> %%~aが利かない
はケツにスペース入ってたから
バグるのは文字コード上の問題のよう
scripting.cocolog-nifty.com/blog/2009/09/wmic-6efe.html
パイプだと改行コードがおかしくなるだけらしいけどその後のコマンド類がおかしくなるのは不明
URL先の説明にあるように直接ファイルへリダイレクトしてtypeで読めばバグらないようになった
wmic process where "name='hoge.exe'" get CommandLine 2>nul >$tmp.txt
for /f "delims=" %%a in ('type $tmp.txt^|find ":"') do for %%b in (%%a) do set "s=%%~b"

798 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 14:54:07 ID:3pQwOKKR.net]
set RUNEXE="%%~a"
じゃろが

799 名前:デフォルトの名無しさん [2022/05/23(月) 17:31:28.72 ID:JTigk3sw.net]
コマンドプロンプトはとても残念なので
set RUNEXE="%%~a"
echo RUNEXE: "%RUNEXE%"
とすると(%a=「t e s t」だった場合)RUNEXE: ""t e s t""と表示されるのだよ...

800 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 17:44:09.74 ID:3pQwOKKR.net]
すまんな
>>787>>784に対するレス
>>786は問題ない
ケツにスペースあってもいいようにしたんだろ

801 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 17:52:18.15 ID:9Kev8wRG.net]
>>782
wmicというのがあるんだ、知らなかった
wmic /?
とすると赤字で非推奨ですと出た

802 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 20:13:36.87 ID:kx8uWZPf.net]
非推奨烙印はcmdを滅ぼそうとしているMS内の一派の仕業だから気にするな
vbsやpowershellのようにcomの使える言語であれば同じことできるから要らんといえば要らんのだがな

803 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 22:36:34.02 ID:vE3vs/4c.net]
自分の周りではあまり知られてないようなのだけど、
setは代入文全体を"〜"で括るとうまくいく場合が多い。(確実ではない)

cmd /v:on
set "aaa=(bbb|ccc)<ddd"
echo aaa=[!aaa!]

aaa=[(bbb|ccc)<ddd]

引数でパスを受け取るバッチファイルでよく使う。
「〜」と「"〜"」のどちらの形式で指定されても同じ値を得られる。
@echo off
setlocal EnableDelayedExpansion
set "FilePath=%~1"
echo FilePath=[!FilePath!]
exit /b



804 名前:デフォルトの名無しさん mailto:sage [2022/05/24(火) 15:42:40 ID:DHD4MJfY.net]
好みだろうけど
常に値はリテラルな""に埋め込まれたものと考えることにした
なんらかの一貫性を貫くのが精神衛生上よい

805 名前:デフォルトの名無しさん mailto:sage [2022/05/24(火) 16:01:20 ID:EZq8VYJv.net]
不自由でも一貫性を好む者って多くの事に対応出来ない低脳だと言ってるようなもの
最適を選ばずワンパターンな手法に頼り用いたがる思考停止した老害へと一直線

806 名前:デフォルトの名無しさん mailto:sage [2022/05/24(火) 16:09:51.54 ID:DHD4MJfY.net]
むしろワンパな%~の剥ぎ取りを信頼してるのが気になったんだが
ダメ文字入っててもサブストリング置換で最後と最初の文字削ったり頭を柔らかく持とう

807 名前:デフォルトの名無しさん mailto:sage [2022/05/24(火) 16:12:20.60 ID:fGpRFhuy.net]
文字列の置換抜き出しを考えてるなら常に""の中の状態にするのは正解だと思う

808 名前:デフォルトの名無しさん mailto:sage [2022/05/24(火) 16:32:08.01 ID:wIwv7WB3.net]
バッチには(残念ながら)絶対はないから、すぐに展開せず要時まで自由度を残す習慣は大事だと思う

809 名前:デフォルトの名無しさん [2022/05/24(火) 19:24:26.65 ID:ZQNStJn7.net]
ダブルクォートをまともに削除できるのが%~しかないのが全部悪い

環境変数にスペースが入っている「かもしれない」状態になるとまともにダブルクォートを外す手段がないんだよね。
set File1=X:\a a.txtとset File2="X:\a a.txt"から同じ状態に持ってこれるコードは簡潔に書く方法がないから諦めた。
sub.bat %File1% %File2% // File1が分裂して死ぬ
sub.bat "%File1%" "%File2%" // File2のダブルクォートが二重になって死ぬ

結局%~1ではがすのが1番まともに書けると思う

810 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 03:42:10.08 ID:Mc6K3UpU.net]
>>798
set "File2=X:\a a.txt"
だと何かハマるパターンがあるの?
普段こうするようにしてるから、後学のために知っておきたい

811 名前:デフォルトの名無しさん [2022/05/25(水) 09:12:08 ID:nfFPZ/Hm.net]
>>799
set "File2=X:\a a.txt" と
set File2="X:\a a.txt" で結果が違う
俺もファルパスなら上の書き方しか使わん

812 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 20:31:54.51 ID:CvuRtmLM.net]
C:\Program Files (x86)
結構昔からあるこのフォルダの配下に置かれたファイルをまともに扱えるバッチはどれだけあるだろうか…

813 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 00:47:09.31 ID:/szrY+JV.net]
>>800
いや、だからその結果が違うのを踏まえた上で、何か罠があったりするのか、という話
回避策があるのにわざわざ問題のある2例しか上げてないから、
何かしらの罠があるから例に出さずにいたのかな、と



814 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 13:33:44.93 ID:eXnOjPn/.net]
その書き方知らんかっただけでしょ

815 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 15:42:12.26 ID:0e7T6NOT.net]
半角スペースや&の付いたファイルなんか知った事かと言い切れるなら幸せなんだがな

816 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 15:55:49.96 ID:J8y6hNBw.net]
>>801
そこだけの問題なら、そのフォルダにシンボリックを張って別の入り口を作り、そこから出入りする

817 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 15:56:19.27 ID:J8y6hNBw.net]
シンボリックリンクね

818 名前:デフォルトの名無しさん [2022/05/27(金) 15:37:55.51 ID:DoIFvz+R.net]
>>802
環境変数にダブルクォートが入るかそうじゃないかだけの問題なのでそこだけの違いにした
こっちの書き方の方が好みか?
set "File3=X:\a a.txt"
set "File4="X:\a a.txt""
File4の書き方は受け入れられんだろうからこの書き方はやめた

819 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 21:59:22 ID:cruiCFAs.net]
>>807
さすがにそのFile4の書き方はないでしょ。好みの問題じゃない。
「&」とか含めないのでは?

820 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 00:40:39.75 ID:eWdSCVXj.net]
>>807
からかわれてるのか、はぐらかされてるのか判断つきかねる
最初の疑問には全く回答得られてないし

とりあえず半年ROMっときますわ

821 名前:デフォルトの名無しさん [2022/05/28(土) 01:15:25.17 ID:N6SgNzpI.net]
set File1=X:\a & b.txt
set File2="X:\a & b.txt"
set "File3=X:\a & b.txt"
set "File4="X:\a & b.txt""
File4駄目だったわ。File1もファイル名が切れるが

最初の疑問(>>799 >何かハマるパターンあるの?)なら、
俺がFile3のパターンでハマったことはない

822 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 01:53:02 ID:sY9CTUi4.net]
>>807
4はどういう状況で使うのか気になる。危険しか感じない
わざと反転させたい場合?

>>810
値に「"&"」など、"エスケープしてる状態で含んでいる場合、反転する
set S=abc"&"def
set "STR_A=hoge%S%fuga"

結局、「何でも許容出来るように」に対応するのはコストが高過ぎるので、想定され得るものに限定しそれに合わせて書くのが現実的
値にしろ運用にしろ何らかの制限付きという条件の下で割り切って使うならバッチは楽
全てのエラー判定とかやり出すと膨れ上がるしキリ無い
何を制限とするかの見極めと切り捨てが大切

823 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 02:02:37 ID:4gWpv+XJ.net]
BATでは取返しのつかない結果にならない限りエラーで止まる、期待した結果にならなかった
のは別にいいかなって思ってる



824 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 02:59:44.49 ID:j34iIhvZ.net]
エスケープ周りをしくじれば大抵は取り返しが付かないけどな
バッチでエスケープ処理が発生するようなら他のスクリプトを検討した方がいいね

825 名前:デフォルトの名無しさん [2022/05/28(土) 04:29:23.28 ID:Ee8LXfQh.net]
タスクスケジューラじゃregを起動できないから、間にbatファイルを挟み、その中でregを指定させたんよね
無事スケジューラの動作が確認できたものの、今度はPC操作中にcmdの起動が挟まってゲームその他の操作を阻害する
瞬間的なcmdウィンドウのポップアップを防ぐ手段はないものだろうか・・・

フリーソフト等にならタスクバー内で完結するプログラム動作も珍しくない、それを通常のcmd起動にも実現させたい^^;

826 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 05:13:46 ID:sY9CTUi4.net]
>>814
ttps://okwave.jp/qa/q852803.html
あとVBから出来たとか昔は出来たけど出来なくなったとか何処かで見た気がす

827 名前:デフォルトの名無しさん [2022/05/28(土) 05:50:05.93 ID:Ee8LXfQh.net]
>>814
え・・・ショートカットリンクにすると、bat発動時のウィンドウポップアップは消えるんですか?
発動、実行、処理に問題はありません
指定時刻で瞬間表示されたcmdウィンドウの影響で生じる、PCデスクトップ上の強制画面切り替えが問題なんです・・・

828 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 19:57:51.48 ID:vVz/heur.net]
>>816
「え・・・」とか言う前にリンク先ちゃんと読んだ?
リンク先に「最小ウィンドウ(バックグラウンド)」で実行できる事は書いてある。
ゲームが影響受けないようになるかは知らない。

タスクスケジューラでの実行でウインドウ出したくないなら
簡単なのはSYSTEMアカウントで実行するように変更すること。
HKCU使ってんなら変更が必要。

829 名前:デフォルトの名無しさん [2022/05/28(土) 20:45:56.96 ID:Ee8LXfQh.net]
>>817
的確な指摘をありがとうございます!
SYSTEMアカウントは最初の試行錯誤で試したものの、最上位命令でさえスケジューラの表示で[実行中]となるわりにbatの起動が見られず、その経緯を経てAdministratorsへ変更していました

batのショートカットを作成し、プログラム操作項目に.lnkを足し、さらにアカウントをシステムへ揺り戻すと、確かにcmdウィンドウの起ち上がり消失を確認できました
問題はタスクの表示が[実行されました]ではなく[現在タスクを実行中です]なところ
これが実際にbatを起動してくれているのか怪しいです・・・
もう少し経過観察してみます

830 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 20:49:45.87 ID:4gWpv+XJ.net]
systemアカウントでの実行だから
逆に現在ログインしてるユーザーの画面に何か表示するようなことは出来ない
batで何か表示しようとしても無理だから起動の確認は後に残るようなファイル出力等で確認

831 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 20:51:48.94 ID:4gWpv+XJ.net]
これはbatに限らないのでメモ帳とか何かのソフトを起動させても画面には現れない

832 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 21:07:54.58 ID:Ee8LXfQh.net]
仕組みの解説ありがとうございます
batの起動によりregファイルを実行することが目的ですので、SYSTEMアカウントのそのような仕様は有難いですね
だから各サイトで迷ったらSYSTEMで!と記されているのでしょうか(私も最初はそれに倣って試していました)

5ch掲示板の多くが「余所でやってください」となるので、ついでで恐縮ですが、こちらにコピー↓↓させてくださいm(vv)m
現状ではSYSTEMアカウントのbat強制発動力に疑問を抱くものの、可能なら私もSYSTEMでタスクを構築させたいです
経過観察後はAdministrators最上位でショートカットを指定起動させた場合のデスクトップ周りを検証するつもりです(bat不発かcmd出現になりそう)
------------------
タスクスケジューラでAdministrators+最上位にすると「正しく終了」+準備完了になります
しかしそれをSYSTEM+最上位にした場合、「現在タスクを実行中です」+実行中と変化します

このSYSTEMアカウント処理の際に設定項目の「新しいインスタンスを並列で実行」はどうなるのでしょうか?
実行中を上書き(もう一度プログラム起動)し続けるのであれば嬉しいのですが、並列という語句で「内部に延々と加算し続けるのか?」と不安に思いました

833 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 21:31:44.96 ID:4gWpv+XJ.net]
>>821
SYSTEMで実行しても実行完了してたら状態は「準備完了」に変わるよ
実行中ならまだそのbatは起動したままで終了してない
もし終了してないのが予期してない動作なら何か途中で止まってるので
複数起動を許可したのならbatのインスタンスが増殖することになる



834 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 21:38:44.30 ID:4gWpv+XJ.net]
想像するに
batが何かの応答を要求しててユーザーのアクション待ちなんじゃないかな
当然キー入力なんかはSYSTEMからは無理なので
タスクマネージャーから強制終了されることぐらいしかできない
上で言ってるようにカレントユーザーじゃないのでHKCUなんて存在しないんだがその点は大丈夫か

835 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 21:47:41.17 ID:j34iIhvZ.net]
SYSTEMタスクからHKCUをってことは、まず現在ログイン中のユーザーを特定してそいつのユーザープロファイルのNTUSER.DATを弄ることになるわけだよ
このスレの範疇だと無理っぽいけどがんばってね

836 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 21:55:22.65 ID:4gWpv+XJ.net]
実行したいユーザーは今の自分なんだからそこは固定にしとけばbatにできるだろ
他ユーザーのレジストリ操作はググれば出てくるよ

837 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 21:57:50.03 ID:4gWpv+XJ.net]
まあ色々言ったけど
画面表示をさけるだけなら、俺ならWSHかPowerShellを使うな

838 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 22:01:28.84 ID:o4a1B59x.net]
regファイルを実行ってレジストリ登録?それならbat使わなくても
最上位の特権で実行する
プログラム: C:\Windows\regedit.exe
引数: /s regファイルフルパス名
でよくない?

839 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 23:50:47.54 ID:Ee8LXfQh.net]
皆さんありがとうございます
やはり表示が「正常に」→準備完了ではない以上、タスクは途中状態でしたか・・・この分では肝心のbatも実行されそうにありませんね

最初のSYSTEMによるタスクの場合、管理者権限での実行に不備があるようで、それでタスクは発動するもののbat動かずという結果になると判断していました
それでAdministratorsへ変更し、命令そのものが管理者によるものへ置き換え、これまでの経緯に至っています

>>827
く、詳しくお願いします・・・自分でも相当な時間をネット検索に費やしましたが実現できませんでした
特に1文字でも損なうと完成されない、引数関連が上手くいかなくて
昔ながらのbatなら自分にもギリ可能でしたので今に至ります
regなら管理者権限も関係なく値を変更してくれるので、それさえ可能なら一番楽なんですよね

840 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 23:51:00.59 ID:Ee8LXfQh.net]
ことの発端は配信の最適化であるDelivery Optimizationのサービス無効化です
そのサービスの0004化が、batの場合管理者権限必須らしく、batを通常起動しただけではスルーされてしまう
reg単体で行えず(自分は)、管理者権限必須で、それらを自動タスク化した場合が大変でした

該当サービスは100%テレメトリながら、散々な細かい検証をしたもののWU関連を全て止めなければ勝手に手動(トリガー)状態へ強制されます
そしてサービスが手動状態にあるとき、ディスクのクリーンアップ他を少しでも伴うとそこで実行されてしまう
ならばどうせカタログで更新しているし?とWU関連全て無効化したのですが、そうすると今度はエクスプローラーが常時CPU使用率5-10%くらいになり微ラグ
appxのwsappxがC:\ProgramData\Microsoft\Windows\AppRepositoryで無限増殖する現象と似ていますね、こちらも8-10%とゾンビし、WU全無効化のエクスプローラーより酷いラグを発生させる

OSと密接に絡んでいるのは痛感していますが、WUを生かしつつ、元から無効化しているストアに加えて電卓等も捨ててappxサービスを完全無効化(こちらは手動ゾンビなし)
あとは如何にしてエクスプローラーのバグを招かずにDelivery Optimizationの恒久的な完全無効化を成せるか、なんです・・・

841 名前:デフォルトの名無しさん [2022/05/29(日) 00:21:06 ID:XW+WDPtU.net]
>>811
File4は環境変数の末尾にスペースが入らない&&環境変数をダブルクォートでくくる目的
setに与えるコマンドラインとしては正当だが、&とかエスケープが必要な文字が入ると構文解析で事故るのでFile1と同じくやらんほうがいい書き方だったわ

842 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 00:28:55.06 ID:NHtpNvxH.net]
>>829
そもそもなんだけど、レジストリを書き替えただけでうまくいくのは確かめてるの?
通常レジストリの書き換えを反映するには、HKCUの場合ログオンが、HKLMの場合再起動が必要なはずだけど
あとユーザーにadmin資格を追加するのは出来ないの
資格があれば最上位の特権にチェックでいけると思うけど

843 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 00:44:54.89 ID:Dh5s7alL.net]
>>831
長年自分好みのregを作成し続け、発動そのものはパンピーチンパン頭なわりに経験則の積み重ねで上手くいっています
再起動の観点は盲点でした、その辺りも毎回あやふやでしたので再確認しないとですね
regのみでサービスが[無効]へ書き換えられるのを何度か目に



844 名前:している気もしますが

reg
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc]
"Start"=dword:00000004

bat
sc stop DoSvc
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc" /v "Start" /t REG_DWORD /d "4" /f

SYSTEM最上位+C:\Windows\regedit.exe /s D:\aaa\bbb\ccc.regで新規タスクを設けたところ、正しく終了し、感触が良さげ
cmdのようなポップアップもありません、この環境で経過観察したいと思います

ただ、今気づきましたが、regは実行中のサービスを止める内容が抜けているので、その線も追加で調べ直します
reg書き込みで駄目ならsc stop特化のSYSTEM最上位batタスクを別途用意する必要がありそうですね
偶然にも、今までの調整が無駄になっていない様子で嬉しいです
[]
[ここ壊れてます]

845 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 01:40:32.51 ID:MBI5r2Hn.net]
対象がHKLMならSYSTEMタスクで普通にバッチ呼び出せばいいんじゃないの
っていうかレジストリいじらんでも「sc config DoSvc start= disabled」でいいんじゃないか

846 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 03:14:11.71 ID:YV7/1RzI.net]
文章に顕れている

847 名前:デフォルトの名無しさん [2022/05/29(日) 07:42:31.92 ID:Dh5s7alL.net]
幾つかあるOS連動のサービスは、それぞれで通常と異なる処置が求められるんですよ・・・
Delivery Optimizationもそのひとつ
今のwin10版はギリ対応可能ながらも、win11の現行はバイパスが削除されたり、これまたさらに面倒な様子で将来が不安

最初に書きましたが、SYSTEM最上位の単純な指定ではタスク上で「正常に」となってもサービス側が受け付けなかったんです
ネット情報だとSYSTEMアカウントに管理者権限が内包されているそうなんですけどね・・・
そこで試行錯誤の上、Administratorsで茶を濁していた→またSYSTEMタスクでやったらいいんじゃね?というのは堂々巡りになってしまいますわー

貴重な意見有難うございました

848 名前:773 mailto:sage [2022/06/01(水) 01:09:04.33 ID:ixkk/oFB.net]
>>775
の続き

7-zip の一時・作業フォルダの指定

Command Line Switches
https://sevenzip.osdn.jp/chm/cmdline/switches/index.htm

-w Set Working directory

例には、-wc:\temp と書いてあるので、-wZ:/rartmp と書けばよい。
注意点として、-wz:/ の、-wとz:/の間に、空白を入れない事

-wだけを指定して、パスを指定しなかった場合、Windows の一時ディレクトリを使用する。
-wを指定しない場合、解凍元のフォルダを使うみたい

849 名前:デフォルトの名無しさん [2022/06/01(水) 06:20:00.46 ID:L0Bj7AY3.net]
ウヒ、プヒヒ・・・
reg手段は結局タスク発動のみが空振りするだけで、肝心のプログラムをサービス変更まで繋げることが出来ませんでしたわorz
引数云々の方法や自分が採った記述の成否・不備は定かではありませんが、まあ、涙目
引数の書き方など、ネット上にさえ適切な情報がなくこれは厳しいですな
カリキュラムや資格を取る過程などで自然と学ぶような内容なんですかね・・・そもそもタスクスケジューラへの強い関心が一般的な日本人の中に存在しないらしいです→グーグルロボット検索が拾えるサイトも無い

その涙目でまた振り出しに戻り、システム最上位のbat単純起動からやり直すと、なんと達成(・д・)
システムアカウントに含まれるバックグラウンド動作、最上位に含まれる優先度、そして内包されているらしい管理者権限
regについてもデスクトップから普通にクリックすると再起動無しで値を4へ変更可能でしたので、やはりスケジューラ登録の過程またはサービス仕様に問題があったようですね

何をもって今回、システム最上位が上手く機能したか不思議でなりませんが、そしてこれが今後もしっかり継続的に発動・反映してくれるか分かりませんが、
当面はAdministratorsで生じていた「cmdポップアップによるデスクトップ阻害」を得ることなくタスクが実行でき、サービスの値もきっちり変わり、嬉しく思います
ポップアップさえ無ければ1/1hでスケジューリングし、より高頻度にサービスを強制無効化可能ですので、快適

関連する中で色々と指導して下さった皆さん有難うございましたm(vv)m

850 名前:デフォルトの名無しさん mailto:sage [2022/06/01(水) 06:50:47.32 ID:2JSbHFne.net]
レジストリ書き込み禁止にすりゃイイんじゃねーの?
知らんけど

851 名前:デフォルトの名無しさん mailto:sage [2022/06/01(水) 09:39:14.46 ID:HV/k13ls.net]
質問
PIDが正しいとして taskkill /f /pid "%PID%" が失敗するケースって何かありますか?
現在以下のように書いてるのですが無駄だったらバカ臭いなと
taskkill /f /pid "%PID%" || (
echo エラーメッセージ
echo エラーメッセージ
echo エラーメッセージ
echo hoge.exe を終了汁!
pause
exit /b 1
)

852 名前:デフォルトの名無しさん [2022/06/01(水) 10:15:17.37 ID:iPR+cHIm.net]
https://docs.microsoft.com/ja-jp/windows/win32/api/processthreadsapi/nf-processthreadsapi-terminateprocess
悲しいことに公式のドキュメントには何も書いてない

指定したPIDのプロセスが存在しない
(PIDを取得した後に正常終了したとかで起こりうる)
プロセスを殺す権限がない

ぐらいのはず

853 名前:デフォルトの名無しさん mailto:sage [2022/06/01(水) 11:32:04.25 ID:HV/k13ls.net]
>>840
ありがとう
一応エラー判定残しといた方が良さそうですね



854 名前:デフォルトの名無しさん mailto:sage [2022/06/01(水) 21:11:06 ID:wWdJLXtL.net]
プロセスは非同期だからエラーよりはkillした後の存在の有無を判定した方がいい

855 名前:デフォルトの名無しさん mailto:sage [2022/06/02(木) 15:41:59.23 ID:Bch8jX4P.net]
>>839
プロセス側にも事情があり間に合わないなどでできないことは多い
live2chはkill、確認を数回繰り返してやっといなくなる

856 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 03:02:05.90 ID:LtGyf47s.net]
ちっきしょーうのAAを貼りたい気分

結局、Delivery Optimizationサービスの0004化はSYSTEM最上位アカウントだとすかしっぺになる
案の定ふりだしやんけwww
なら操作の引数で管理者権限を付与出来ないかと模索するも、ネット情報じゃ無さげ
cmd他、どれもコンテキストメニューなど、OSのUIから指定起動させる例ばかりでコマンド的なものがない
在るとしてもネット上で指南されるような内容ではないらしい

タスク上は「正しく終了しました」が初回のみ出て、それ以降は常に[次回の実行時刻]を更新するのみ=つまり発動さえしていない
該当するプログラム=batを自分でデスクトップから起動→cmd発動でもサービスが変わらず
同条件で右クリ→管理者権限で実行すると余裕の発動・・・

だからそれをタスクのバックグラウンドでやりたいんだよおおおおおおおおおおorz
SYSTEMアカウントはバックグラウンドで動作してくれるけど管理者権限をすかしっぺ、Administratorsアカウントは余裕で発動するけどバックグラウンドじゃない
どうしろっつーねん!SYSTEMアカウントが管理者内包ってのは都市伝説なのかああああ

天才様助けてー!

857 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 03:30:52 ID:X5NsBG94.net]
日記は日記帳へどうぞ

余計な修飾子や個人的感想が多く、読ませる気の無い文章
「わざわざ読んで頂き申し訳ございません」という謙虚さが皆無
長々とおまえの頭悪そうな臭い愚痴駄文を読んでやるほど暇じゃない
質問や説明は具体的、且つ、必要最小限、シンプルに
何なら箇条書きでも良いくらい
言葉は齟齬が生じないよう正確に
「発動」って何やねん
DQN特有の独自定義
まず正しい日本語と用語を学び直せ

858 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 03:34:09 ID:X5NsBG94.net]
> ネット情報じゃ無さげ
無かったら英語でググれ
いくらでも出て来る

859 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 03:52:08 ID:oul3t3W9.net]
他ユーザーのレジストリも弄れるってあっただろ

860 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 05:56:36.90 ID:LtGyf47s.net]
>>846
いつも英字でも検索しているんですけど、OS関連は意外に多く抽出されるものの、何故かタスクスケジューラに関してのみ微妙なんですよね・・・
検索ワードがシビアなのか、昨今不評なグーグル検索ロボットの偏向かもしれません
とはいえ2019年10月からガチテレメトリとなったyahooを利用する気にもなれませんし・・・
それだけ世間的な意味でタスクに関心がないのだと思いますorz

百歩譲って、system最上位アカウントに管理者権限を強制付与出来ればいいんですが
引数もタスクのようなbatに対したコマンドではなく(そもそもタスクの引数に関する指南が超少ない)、batの中で特定のプログラムを管理者権限で実行する方法ばかり見つかって意味無し

自分がデスクトップ上の右クリでbatを直接管理者権限実行させ、サービスの値が0004の状態はsystem最上位アカウントでも定刻の1時間刻みで「正常に終了」となる
0004を0004に上書きするbat(笑)は管理者権限の壁が無いようだw
この場合は次回の予定のみが更新されることもなく、しっかりと前回の実行結果を残す(1時間刻みで)

それが!WUか何かのOS強制により手動(トリガー)と改変されたとき、system最上位アカウントではフリーズしてしまう様子なんですよねorz
何なんだよ[配信の最適化]ゾンビ・・・ほんまキモいわ・・・

861 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 06:25:04.10 ID:25hReR0t.net]
文章力皆無なのに自分ではちゃんと書けてるつもりなんだろうなぁ・・・ほんまキモいわ・・・

862 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 06:33:18 ID:oU3L37au.net]
相手すんなよ...

863 名前:デフォルトの名無しさん [2022/06/03(金) 08:41:36.30 ID:r3SSykMX.net]
お前の書いていることが省略しすぎたり独自用語か混ざってたりで読むのに疲れる
書いてることからやりたいことの確認をしなきゃいけないし

> Delivery Optimizationサービスの0004化
特定のサービスの挙動を変えたいor止めたいらしいのがググってようやくわかった
0004が何を示してるか未だにわからん

> なら操作の引数で管理者権限を付与出来ないかと模索するも、ネット情報じゃ無さげ
> cmd他、どれもコンテキストメニューなど、OSのUIから指定起動させる例ばかりでコマンド的なものがない
ここでのお前がやりたいことは管理者特権を付与してコマンドラインを実行したい」でいいんだよな?

> タスク上は「正しく終了しました」が初回のみ出て、それ以降は常に[次回の実行時刻]を更新するのみ=つまり発動さえしていない
イベントビューアーで確認したんか?サービスの動作ログだよな?



864 名前:デフォルトの名無しさん [2022/06/03(金) 08:52:40.64 ID:rHBirywu.net]
cmdに管理者特権とかいう概念はないのでpowershellを経由するしかない。runasでググれ。
プロセスが管理者特権で動いているかはタスクマネージャーから確認できる(表示列を追加する必要があるが)

サービス関連は触ったことないから知らんが、cmdでいくら探してもないならpowershellから動かすしかないんじゃない?

865 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 10:14:29.24 ID:84QuKkvW.net]
そもそもの方法論がもうね
そこまでバカでそこまで必死なんだったらローカルグループポリシー使えよっていう
HomeならPro化すればいいだけなんだから

866 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 10:34:45.22 ID:CIdSIcJr.net]
動詞を指定して実行する事は他の言語でもできるけど、
powershell程には簡潔に書けないからね

867 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 10:42:06.97 ID:CIdSIcJr.net]
ちな0004はREG_DWORDの値4で場所的にそのサービスの無効を意味してる
こういうの知らないなら何のこっちゃだろうな

868 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 10:52:22.42 ID:CIdSIcJr.net]
一見高度な事の様で大した中身でもなく、文体が気持ち悪いから知ってる人がいてもスルーされる。
案の定相手にしてるのはルビキチだけ

869 名前:デフォルトの名無しさん [2022/06/03(金) 14:11:38.16 ID:LtGyf47s.net]
くっそワロた・・・
0004さえも理解に乏しい、知識量や発想力の人達へ向けて私は質問していたのだろうか^^;
runasなどもとっくに調べているし、グルポは超初期に実行済みで、Delivery Optimizationは突破してくるから今日に至っている話なわけで

こういうのも過去に書いているんですけど、虫食いで読んで適当に回答している方や、そもそもの知識量・発想・知能的な面で素人の私より劣っていそうな人が
いえ、これ以上は暴言になりそうですし省略しますわ
・・・バッチ専用スレとのことで、私も皆さんへ過大評価や虚像を抱いていたのかもしれません

powershell、完全に時代錯誤な私の知識・技量では厳しかったものの、これを機に学んでみましょうかね
batの代わりにps1か・・・自分に使いこなせるか不安ですorz
皆さん数々の意見を有難うございました

870 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 14:54:57.72 ID:oCwyAce/.net]
ごめんあんまり読んでないんだけど、対話が求められて自動化できない?のならdoskeyのマクロは試した?
GUIでのダイアログだったら無理だけど

871 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 16:20:46.55 ID:gMGR7N6s.net]
そもそも対象のサービスが無効にできない (ようにみえる) 類のものなのではないか?

872 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 00:01:31.51 ID:qz14Jeu3.net]
AWS の本にも、Windows サーバーの記述は、1% ぐらいしかない。
システムで、Windowsを使う香具師がいない

ファイル共有・Active Directory・タスクスケジューラ・Remote Desktop、
バッチ・コマンドプロンプト・PowerShell ぐらいが、簡単に紹介されているだけ

ほとんどがDocker を使う。DockerはLinuxの技術。
だから、Windows 10のWSL2 で、Linuxを使えるようにしている

873 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 03:03:41.49 ID:nWFOJiT2.net]
ソフト板のVLCスレで暴れてたガイジに似てるな



874 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 03:16:47.38 ID:4DyQyO7v.net]
SYSTEMアカウントで書き替えたら再起動が必要なんじゃないの?

875 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 14:29:54.55 ID:bgz5gZEc.net]
サービスの無効化なんか sc config でできるだろ
なんでわざわざレジストリを直接編集しなきゃいけないんだ?しかもSYSTEMで

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/sc-config

そもそもDelivery Optimizationを無効化したい理由は何なんだ

876 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 15:01:48 ID:M0jEQKIa.net]
ID:LtGyf47s みたいに要点を簡潔にまとめられず矢鱈とグダグダ書いちゃう人って何かそういう頭の障害でもあるの?
言葉遣いも変だし外国人なのかな

877 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 07:44:59.76 ID:7J0TRviH.net]
簡単なことを難しく言うやつを世間一般ではhorse and deerという

878 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 12:38:26.56 ID:Z2t62Jo8.net]
わざとか?

879 名前:デフォルトの名無しさん [2022/07/09(土) 18:11:33.95 ID:qkG/5q2Z.net]
以下のようにUNIXライクにFILESをパイプしてfindstrコマンドに渡すことは不可能でしょうか?

@echo off
setlocal enabledelayedexpansion
set LF=^

for /f "tokens=* delims=" %%x in ('dir /w') do set FILES=!FILES!%%x!LF!

@rem ↓FILESをパイプにしてfindstrコマンドの入力にしたい
for /f "tokens=* delims=" %%x in ('echo !FILES! ^| findstr "Siki"') do set TEST=%%x

pause
endlocal
exit /B 0

880 名前:デフォルトの名無しさん [2022/07/09(土) 18:16:36.89 ID:GjOGWrlu.net]
不可能です

881 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 18:31:41.95 ID:qkG/5q2Z.net]
不可能とのことなのでファイルに一旦出力することにしました

@echo off

setlocal enabledelayedexpansion
set LF=^


for /f "tokens=* delims=" %%x in ('dir') do set FILES=!FILES!%%x!LF!
echo !FILES! > aaa.txt

for /f "tokens=* delims=" %%x in ('type aaa.txt ^| findstr "Siki"') do set TEST=%%x

echo %TEST%

pause

endlocal
exit /B 0

882 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 18:32:57.07 ID:qkG/5q2Z.net]
でもこの例ならdir | findstrでいいですね…

883 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 18:38:08.89 ID:qkG/5q2Z.net]
本当にやりたかったことは

curlコマンドで某APIでJSONデータ取得
JSONデータをjqコマンドで値取得
取得した値からfindstrコマンドで余計な行を除去

としたかったのですが、某APIが叩ける回数が限られているため
JSONデータを取得する回数を抑えるために一旦配列として保持したかったのです



884 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 18:41:27.79 ID:LLXk/I9Y.net]
>>871
真面目な話そこまでやりたいならPowerShellとか使った方が楽だと思うぞ...

885 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 18:49:52.57 ID:qkG/5q2Z.net]
>>872
実はやりたいことがこれ以上の事は無いのでバッチレベルで可能だろうと思ったのですが
配列?の使い方がよく分からず質問しました
ひとまず一時ファイル出力して使いまわす形にしようと思います
ちなみに某APIとはスマートリモコンNature Remoの事です

886 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 18:54:25 ID:NvGIH30g.net]
powershellに一票
乗り換えを先延ばしにすればするほど損が積み上がる

887 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 18:59:09 ID:NvGIH30g.net]
判断のポイントはクッソ不便なbatを捨ててだいぶマシなpsに以降する時期をいつまで先延ばしにするかだけだと思う

888 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 18:59:46 ID:qkG/5q2Z.net]
時間ある時に勉強してみたいと思います>PowerShell
ググったらWin7時代から標準であってOSSになっててLinuxでも実行可能とか知りませんでした
割と長く銀行系にいるので頭が古いんでしょうね…

889 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 20:00:42.46 ID:al4zTytR.net]
Ruby では、外部コマンドのcurl を呼び出さなくてもできる

require 'open-uri'
require 'json'

url = 'http://〜' # URL

uri = URI.parse( url )
p obj = JSON.parse( uri.read ) # response body

例えば、外部コマンドのcurlを呼び出して、スクレイピングするなら、

require 'nokogiri'

command = `curl #{ url }`
html = `#{ command }`

doc = Nokogiri::HTML( html )

890 名前:877 mailto:sage [2022/07/09(土) 20:05:46 ID:al4zTytR.net]
>>877
修正

>command = `curl #{ url }`
command = "curl #{ url }"

891 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 21:46:59.61 ID:3uODqf9z.net]
setlocal enabledelayedexpansion
set A0=
set i=0
for /f "delims=" %%a in ('dir /b^|findstr "Siki"') do set "A!i!=%%a" &set /a i+=1
if not defined A0 echo Not found.&pause&exit /b
set /a i-=1
for /L %%i in (0,1,%i%) do echo A%%i = "!A%%i!"
pause

892 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 23:21:25.81 ID:3neYOO2a.net]
set /a の結果とか与えた数値を16進表記に変換するコマンドか何か良い方法があったら教えて欲しいです

893 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 01:02:07.69 ID:bfkyQVXg.net]
>>880
bc.exe



894 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 01:14:08.48 ID:bfkyQVXg.net]
https://linuxjm.osdn.jp/html/GNU_bc/man1/bc.1.html
gnuwin32.sourceforge.net/packages/bc.htm

895 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 01:32:20.92 ID:bfkyQVXg.net]
@echo off
set /a a=123*456
echo a=%a%; obase=16; a | bc
pause

896 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 01:42:01.70 ID:bfkyQVXg.net]
echo obase=16; %a% | bc
でもいい

897 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 07:47:11.80 ID:bfkyQVXg.net]
set /a なら値は高々32ビットだよね
bc は不要かも

cmd /c exit /b %a%
echo %=ExitCode%

898 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 10:43:07.05 ID:LvB8fWz+.net]
ダントツ遅いが
powershell -c "'{0:x}' -f 255"

899 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 10:45:53.90 ID:CXcliooi.net]
obaseとかbcとか知らないことがいっぱい出ているな

900 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 11:33:23.34 ID:RIaxNIcl.net]
888

901 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 13:09:13.02 ID:ZzUgbaoD.net]
わざわざバッチでやるってことを理解してないアホがいる
pythonでも入れてろゴミ

902 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 13:12:16.30 ID:P7NcnZ58.net]
batだけで計算しても理解はされないだろうよ

903 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 15:55:27.20 ID:bfkyQVXg.net]
>>885 はバッチだけだよ
もし桁数が多いのをやりたいなら
過去のスレを探したらバッチがあるよ



904 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 18:11:09.86 ID:5WL5LWhS.net]
set /a n=1194684
if "%n%"=="0" set "r=0" &goto :END
setlocal enabledelayedexpansion
set HEX=0123456789abcdef
set /a "a=n&0xf, b=n>> 4&0xf, c=n>> 8&0xf, d=n>> 12&0xf, e=n>> 16&0xf, f=n>> 20&0xf, g=n>> 24&0xf, h=n>> 28&0xf"
set r=!HEX:~%h%,1!!HEX:~%g%,1!!HEX:~%f%,1!!HEX:~%e%,1!!HEX:~%d%,1!!HEX:~%c%,1!!HEX:~%b%,1!!HEX:~%a%,1!
:DEL_PADZERO
if %r:~0,1% equ 0 set "r=%r:~1%" &goto :DEL_PADZERO
endlocal &set r=%r%
:END
echo 0x%r%
pause
INT32の範囲で良いならバッチではこういうバカっぽいのが結局1番速いんじゃね?
レスアンカーが多過ぎと怒られたから右シフトの右にsp入れてる

905 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 19:27:14.02 ID:bfkyQVXg.net]
話変わるけど右シフトのすぐ右の数字は危険だよね
アンカーに解釈されるので2chで数値が変わる場合があるんだよ

906 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 22:42:20.46 ID:AXmcGRlR.net]
>>885,886,892
ありがとうございました
powershellは2回目以降だとそんなでも無いですが初回はどうしても遅くなるみたいですね

>>881-884
readline5.dll というのを落としてbcと同じ場所に置くことで動きました
日本語ヘルプ(https://linuxjm.osdn.jp/html/GNU_bc/man1/bc.1.html)が凄く助かりました!
echo sqrt(2) | bc -l
echo scale=10; 4*a(1) | bc -l
とかバッチに無い計算が出来て感動。面白かったのですがパイプで式を渡す時""で括れないので^&|などのメタ文字を
echo 8^^^^2 | bc
echo 8^^^&^^^&2 | bc
とか^エスケープしなければならないのが使いにくいのと
scaleで小数点以下桁数指定出来るのは良いのですが最下桁が四捨五入でも切り捨て切り上げでも無く変な値になったりとかが
惜しい感じですね
エスケープはファイルにして読ませれば良いし最下桁は自力で切り捨てれば良いだけですのでいずれ何かで役立つかも
ありがとうございました

907 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 09:18:41.04 ID:WQSCizyX.net]
エスケープは入力要求メッセージ(末尾改行無し)を使って回避する方法がある。
<nul set /p "=8^2" | 〜
※もし行(末尾に改行)が必要なら
<nul set /p "=8^2" | more | 〜

908 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 10:55:51 ID:obFo1BRC.net]
>>894
set "a=8^^2" & echo %%a%% | bc

909 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 07:30:05.93 ID:oa53tMxs.net]
>>895
目からウロコなTips
set /p <nul="8^2" | more | bc
で行けました
moreの代わりにfindやfindstrなどパイプで受け取って改行付加して吐けるコマンドなら使えるっぽい。他には以下とか
(set /p <nul="8^2"&echo=) | bc

set /p の改行無しecho の用法は知っていたんだけどこの局面で使える事に思い付けなかったのが悔しい

910 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 20:26:36.34 ID:hShn1n51.net]
コマンドからリモートホスト名とそのIPを取得出来ますか?

911 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 12:49:48.16 ID:WvMv+Qf8.net]
nslookup … DNSで調べる
ping … hostsとか諸々込みで実際にどう名前解決されるか
nbtstat … NETBIOS名なら
netstat … 通信で実際に使ってる自端末と相手のIPアドレス
ipconfig … 自端末の諸々
netsh … 自端末の諸々

912 名前:898 mailto:sage [2022/08/14(日) 18:43:42.99 ID:0tA/3KXA.net]
各コマンドのヘルプ見たり試してみたけど良く分からなかった
WAN側IPとそのホスト名をコマンドから知れないか?を知りたかったんだけど無理そうですか?
nslookupで引数にIP指定すればホスト名は取れるんだけどIPをどうやって知ったら良いものか

913 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 19:35:36.51 ID:R62l2k+7.net]
>>900
状況がよくわからん
「WAN側IP」とか言ってるから自宅(自社)のルーターを自宅(自社)のLAN側から知りたいという話?



914 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 19:37:41.23 ID:WvMv+Qf8.net]
インターネット上の相手側から見える、自WANのWAN側IPアドレスって事?
例えば自端末がオンラインゲームのホストになる際に相手に教えるIPアドレス。

WAN側機器のWeb管理コンソールとか、
「診断くん」等のWebサービスをスクレイピングすればいいよ。
探せばAPIサービスなんかもあるかもね。
※Webサービス使うときは利用規約をよく読んでね。

既にIPアドレス知る方法を1つは知ってるようだから、その方法でもいいよ。

915 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 19:49:12.00 ID:3lHTKQ6A.net]
ホスト名とは何かという定義が必要だな

WEBサーバーなら複数のホスト名(URLのドメインパート)で同じ(時には複数の)サーバーに接続する
https://5ch.net/でアクセスされるサーバーなら 5ch.net がホスト名だが
同じサーバーが他のドメインもホストしているなら、他のホスト名も持っていることになる
あるサーバーが、接続され得るすべてのホスト名を知りたいと思っても、それは世界中のDNSの勝手なの、
漏れなく調べるためには、世界中のすべてのドメインのレコードを調べる必要があるので、実際には無理。

DNSの逆引きは、それを設定している人が必要な分を登録しているだけなので、すべてとは言い切れない。

916 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 20:04:12.33 ID:zcJ+8Zbe.net]
>>900
現在接続形態で多いのが、ルータの下にローカルネットワークでPCが繋がっているというもの
この場合、PCからはローカルネットワークが全てでありIPアドレスもローカルIPアドレスが使われる
グローバルWAN側のIPアドレスを知りたいのなら
ルータにログインしてアクセスして情報を貰うか、
webのIPアドレスを教えてくれるサイトから情報を取ることになる
つまり>>902の言うとおり

917 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 20:07:44.49 ID:0tA/3KXA.net]
そうです。自分のインターネット側のIP
ルーター管理画面のWAN側IPです
これをコマンド(LAN側のマシン)から調べる方法が無いのかなって
> Webサービスをスクレイピング
これってコマンドでやる方法あります?
NECのなんですけどルーター管理画面から取れるのかな?
ちょっとググったりしてみましたけど簡単なバッチくらいしか使えない自分にはハードル高いかも

918 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:44:27.94 ID:zcJ+8Zbe.net]
>>905
curl.exeを持ってこないといけないけど
診断君のスクレイピングだと
@echo off
curl.exe taruo.net/e/ -s -o "res.tmp"
for /f "tokens=*" %%i in ('findstr "<TD><tt>" res.tmp') do set host=%%i&goto :get_ip
:get_ip
for /f "skip=1 tokens=*" %%i in ('findstr "<TD><tt>" res.tmp') do set ip=%%i&goto out
goto :eof
:out
for /f "delims=<> tokens=3" %%i in ("%host%") do set host=%%i
for /f "delims=<> tokens=3" %%i in ("%ip%") do set ip=%%i
set ip=%ip:~0,-2%
echo HOST NAME = %host%
echo IP ADDRESS = %ip%

919 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:55:35.81 ID:zcJ+8Zbe.net]
>>905
何も要らないが、powershellを使わないといけない
(なおwebアクセスで診断君以外ではtls1.2を有効にしないとダメなことが多い)

$res = wget taruo.net/e/
if ($res.content -match "REMOTE_HOST<\/TD>\n<TD><tt>(.+)<\/tt>[\s\S]+?REMOTE_ADDR<\/TD>\n<TD><tt>([.\d]+)" ) {
$host_name = $matches[1]
$ip_address = $matches[2]
}
$host_name
$ip_address

920 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 00:00:17.27 ID:xwOg3pSS.net]
>>906-907
ありがとうございます
curl.exe はなぜか 7.55.1.0 が system32に入ってました
参考にルーター管理画面から取得出来ないか試して無理だったら使わせて頂きます

921 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 02:02:49.45 ID:xwOg3pSS.net]
お陰様でコマンドから確認出来るようになりました。この度は本当にありがとうございました
for /f "skip=301 tokens=4 delims=< " %a in ('curl admin:admin@192.168.0.1/index.cgi/info_main_set -s') do (for /f "skip=3 tokens=2" %b in ('nslookup %a') do @echo %b)&pause

pauseからCtrl+Cで止めているのですが、breakはバッチでgotoしないと無理ですよね?

922 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 08:55:40.32 ID:3ogXO4Oz.net]
call :ラベル名 で処理を呼び出して exit /b を break として使うこともできるよ

923 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 21:05:50.46 ID:Z47lvB2J.net]
>>909
breakしたい、というか302行目だけ欲しいってことかな。
findstrで行番号振って、さらにfindstrで目的の行だけ取るって方法があるよ。

for /f "tokens=4 delims=< " %a in ('curl 〜 -s^| findstr /rn /c:"^"^| findstr /r /c:"^302:"') do



924 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 15:31:14.62 ID:RClv+rPW.net]
>>911
for /f "tokens=5 delims=< " %a in ('curl admin:admin@192.168.0.1/index.cgi/info_main_set -s ^| findstr /n "^" ^| findstr "^302:" ') do for /f "tokens=2" %b in ('nslookup %a ^| findstr "名前 Name"') do echo %a : %b

ありがとうございます。Ctrl+C する必要無くなりました
skip=301付けたままのうっかりミスのせいで上手く動かない原因を文字コードがEUC-JPだからfindstrが機能しないのだと勘違いし文字コードを変換する外部ツールnkf.exe入れたり明後日のことしてハマってました
目的が何行目か決まっている時は最良の方法かもですね
行番号列挙する必要がありますが複数行でも使えますし

925 名前:デフォルトの名無しさん mailto:sage [2022/08/27(土) 21:14:13.99 ID:S8eeCUJc.net]
文字列の入った変数から、その文字数を高速に取得したいんですが
なにか良い方法はありますか? 上限は8189です

926 名前:デフォルトの名無しさん mailto:sage [2022/08/27(土) 22:59:03.27 ID:OpG+r6e/.net]
if "%s:~4095,1%"=="" (4095文字より少ない) else 4095文字よりも多い

:4095未満
if "%s:~2048,1%"=="" (2048より少) else 2049以上4095未満

:4095以上
if "%s:~7042,1%"=="" (4095以上7042未満) else 7042以上

こんな感じでifを入れ子にでもサブルーチンにでもしてある程度どの範囲にあるか詰めてからカウントすれば?
8189文字で正常に動くかは忘れた分からん
カウントは 遅延展開で if "!s:~%N%,1!"=="" って感じで Nを+1してループさせればいい

927 名前:デフォルトの名無しさん mailto:sage [2022/08/27(土) 23:07:32.10 ID:S8eeCUJc.net]
>>914
ありがとうございます。参考にさせていただきます
ちなみに8189はcmdの仕様による限界です

928 名前:デフォルトの名無しさん mailto:sage [2022/08/27(土) 23:22:13.27 ID:VY6ZsFbR.net]
>>913
> 高速に取得したい
バッチでやるのはやめた方がいいかと

929 名前:デフォルトの名無しさん mailto:sage [2022/08/27(土) 23:24:42.08 ID:OpG+r6e/.net]
setだかcmdの構文解析だかの引数の文字数上限が8191 (0x1fff) とかで "s=" で2文字必要だから8189とかだったかな
変数名が単一文字で無かったり "" で囲ったりしても使用可能文字数減るはずだし
forやifの中で展開出来なかったりしたと思うから
限界探るなら一見使えているように見えてもちゃんと確認しといた方が良いよ

930 名前:デフォルトの名無しさん mailto:sage [2022/08/27(土) 23:49:06.77 ID:OpG+r6e/.net]
4096 -> 2048 -> 1024 -> 512 -> 256 -> 128 -> 64 -> 32
if で8回くらい判定させればそれなりに速く出来ると思う
256分割。。
オフセットも変数にしてループするとか
512で真だったら /2 偽だったら *1.5 (set /a N=N/2+N) てな感じで

931 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>913
set s=abcdefg
setlocal enabledelayedexpansion
set n=0

932 名前: & if defined s (set /a "n=1<<13"
for /L %%i in (12,-1,0) do (set /a "a=n-(1<<%%i)"
for %%j in (!a!) do if "!s:~%%j,1!"=="" set n=!a!))
echo !n!
[]
[ここ壊れてます]

933 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
なるほどなー
set n=!a! や set /a "a=n-(1<<%%i)"
これがパッと出て来るなんて頭良いですね



934 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 10:26:23.19 ID:+w1wfoOM.net]
たとえばファイルサイズを
%~z1 でなくfilename.sizeみたいなわかりやすい書き方に
する方法はないですか

935 名前:デフォルトの名無しさん [2022/08/28(日) 10:36:37.74 ID:FcIb+N5t.net]
バッチファイルにわかりやすい書き方なんてものがあったら、俺の髪はもっと残ってた

936 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 11:08:55.91 ID:CaouF0NP.net]
バッチの基本的な考え方としては基本コマンドにこだわらず外部コマンドを呼ぶことだと思う
セキュリティ的に外部コマンドは入れられないといった制約があるならこのレガシーツールを使い続けるのは無理がある
現実解のひとつはPowershellのワンライナーを呼ぶことで
そうやって少しずつ学んでるうちに段階的にbatを卒業することだと思う

937 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 11:23:21.78 ID:+w1wfoOM.net]
>>923
ありがとうございます
やはり無理なのか、aliasesなどを使った名案があればいいのに
Powershellはコマンド名が長すぎて使う気になれない
外部コマンドやツ-ルを使えば簡単でもセキュリティ的に問題があるかわからないので使いたくない場合がある

938 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 11:41:21.61 ID:3aiLuiYL.net]
エイリアスもどきはあるよ
マクロファイルに定義を書いておいて一斉に登録することもできる
doskey /?
あとpowershellにはエイリアスがある

939 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 15:23:54.30 ID:CaouF0NP.net]
Powershellは単に慣れと食わず嫌いの問題やね
cmdも無数の気持ち悪いルールがあるし現にたかが文字を数えるだけで呪文めいたコードが必要になってる
何にせよ人間慣れれば気にならなくなるもの
さすがにあと5年で定年だからプログラミングしなくなりますなんて老人には勧めんけどね
コマンドの長さとエイリアスについては
俺はGet-ChildItemはダルいからdirやlsと書くし
ForEach-Objectの代わりに%と書き続けてる

940 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 15:36:49.18 ID:3aiLuiYL.net]
powershellの弱点は初期起動に時間が掛かるという点だね
通常的にpowershellを使ってるならいいけど、
それこそ特定の処理だけたまに使うという人にはそこがネックになる
そういう場合はもうオブソリュートだがWSHがいい仕事をする

941 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 17:28:34.01 ID:hYNZdTyV.net]
>>921 わかりやすい変数に代入すれば?

942 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 19:39:30.66 ID:TtkhtxSa.net]
底辺ドカタがアイデンティティ護ろうと必死だけど必死に見られたくない虚栄心とのせめぎ合いが垣間見えてワラw

943 名前:デフォルトの名無しさん mailto:sage [2022/08/28(日) 19:49:06.93 ID:hYNZdTyV.net]
エイリアス無いし
batを使いたいなら騙しながらやるしかないだろ



944 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 03:05:26.48 ID:Rm8LZ6WJ.net]
>>924
ほんとはvbsが起動も速度も速い上にバッチやps程変な癖もなくていわゆるVB脳程度の知識でそこそこのものが手軽に書けるんだよ
ただこの板にあるスレが一言で言えば気持ち悪いから誰も触れないのよ
よくvbsはオワコンて言われるけど少なくとも2029年までは標準で使えるから安心していいよ

945 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 04:54:03.93 ID:DAjO1ugz.net]
@echo off &setlocal
call :LEN
echo %errorlevel%
call :LEN a
echo %errorlevel%
call :LEN ab
echo %errorlevel%
call :LEN abcde
echo %errorlevel%
call :LEN "abcdefg"
echo %errorlevel%
pause &exit /b

:LEN
setlocal enabledelayedexpansion
set "s=%~1"
if not defined s goto :EOF
set /a "n=8192" &rem "1<<13"
for /L %%i in (12,-1,0) do set /a "a=n-(1<<%%i)" &echo n:!n!, a:!a! &for %%j in (!a!) do if "!s:~%%j,1!"=="" set n=!a!
exit /b %n%

>>919 さんのこれ凄いね
関数っぽく使えるようサブルーチン化と変数確認のechoさせてみたけど
バッチでの文字数カウントとしては最強じゃね?

946 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 07:10:34.83 ID:ZvttE7Ov.net]
変数に代入出来るのが8000でも
set/pで入力出来るのは1000ほどしかないな
文字数が多いと色々と落とし穴ありそう

947 名前:デフォルトの名無しさん mailto:sage [2022/08/30(火) 16:27:10.19 ID:2X2Lv8NW.net]
>>932 更に分かりやすくしてみた
for /L %%i in (12,-1,0) do set /a "b=1<<%%i, a=n-b" &set /p<nul="a:[!a!] = n:[!n!] - (1<<%%^i:[%%i]):[!b!] " &for %%j in (!a!) do if "!s:~%%j,1!"=="" (set "n=!a!" &echo 文字:無い) else echo 文字:在る

948 名前:デフォルトの名無しさん mailto:sage [2022/08/30(火) 20:51:26.64 ID:Qtk7w0l/.net]
もう質問者はいないぞ

949 名前:デフォルトの名無しさん mailto:sage [2022/08/30(火) 23:17:38.91 ID:+Bm8wCSm.net]
素人なんだけど >>919 みたいなのってプログラマだったら知っていて当然の定番のロジック?アルゴリズム?だったりするん?

950 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 00:08:53.66 ID:F2h2Wpm0.net]
>>936
やってることはただの2分探索だよ
アルゴリズムの本とか一通り読んでれば思いつくよ
特にシフト使ったちまちましたことは組み込みプログラマが得意だろう

951 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 05:05:19.96 ID:I3t0py3T.net]
>>936
アルゴリズム自体はまあ知ってて当然レベル
それをバッチで実装するのはなかなか凄いと思う

952 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 06:19:56.53 ID:IktOvXlL.net]
個人的にはforの入れ子がおもしろい。そんな方法があるのかと思った。
普通そこはcallを考えるけど、そうすると速度が落ちるのかな

953 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 20:20:14.08 ID:TgQJCwr4.net]
言語にっよっては文字数を数える関数とかがあるけど、こういう手法を駆使してるん?



954 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 21:42:17.85 ID:/4IK1Kkc.net]
%%iをカウントダウンさせて変数一つ省略させてるのが美しいわ

955 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 23:00:05.56 ID:dYVvh+jC.net]
>>940
頭から数えるか、文字列型に文字数の情報も持たせてる
x文字目を1文字切り出して有るか無いかっていうのは結局言語側で文字数わかってないとだめなわけで

956 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 23:03:12.74 ID:FwIzrDsl.net]
可変長の文字コードが一般的だから、先頭から数えないと文字数はわからない

957 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 23:25:40.84 ID:8OAd82SA.net]
942の言う通り言語や型によっては文字数を予め持たせてるよ
最初に一度だけカウントしてメモっておけば何度も数え直す必要がない

958 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 23:41:16.72 ID:IktOvXlL.net]
C言語のstrlenだと単純に先頭から0を探すだけ
末尾以降のメモリは0とは限らない。ゴミだらけ

959 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 05:31:13.24 ID:dRjt3+vQ.net]
>>944
文字数を保持してる言語ってあるの?
たいていバイト数だと思ったけど

960 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 10:54:06.41 ID:KDf3jCCr.net]
たぶんだけど
内部表現がUTF-8みたいな可変長(Perl等)ならバイト数じゃなくて文字数で持ってると思う。
内部表現がUTF-16みたいな固定長(.NET等)でバイト数÷2が文字数になる言語だと、
「取得毎に÷2(右シフト)の負荷」をとるか
「常に文字数保持のメモリ消費」をとるかは言語による気がする。※まあ後者かな。

961 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 11:14:11.70 ID:BOpcWEhd.net]
if definedはあるが、if not definedはエラーになることを発見した

962 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 11:34:31.15 ID:KDf3jCCr.net]
ならんが

963 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 12:10:09.24 ID:BOpcWEhd.net]
>>949
すみません、ミスでした
おかしいな



964 名前:デフォルトの名無しさん [2022/09/01(木) 14:31:17.40 ID:EyFcbtIt.net]
初心者です
[曲名].mp3 の様に
曲名をカッコで囲んでファイル名を出力する方法はどうしたらよいのでしょうか?
-o "%%(title)s.%%(ext)s"
ここの()を[]に変えてもダメでした
お時間ある方いらっしゃいましたらよろしくお願い致します。

965 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 14:33:44.02 ID:5NMGBymZ.net]
多分こっちのスレで聞いた方がいい

【DL】動画の保存方法総合スレ【アダルト禁止】part51
https://egg.5ch.net/test/read.cgi/streaming/1654911933/

966 名前:デフォルトの名無しさん [2022/09/01(木) 14:37:30.33 ID:EyFcbtIt.net]
952さん
教えてくれてありがとうございます
失礼いたしました

967 名前:デフォルトの名無しさん [2022/09/01(木) 14:41:09.20 ID:EyFcbtIt.net]
教えて頂いた所は書き込みできませんでした><;

968 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 14:42:55.59 ID:5NMGBymZ.net]
今出先だから試せないけど多分こうかな
-o "[%%(title)s].%%(ext)s"

969 名前:デフォルトの名無しさん [2022/09/01(木) 14:52:40.78 ID:EyFcbtIt.net]
599さん出来ました♪
親切に教えてくれてありがとうございました
感謝です(*- -)(*_ _)ペコリ

970 名前:デフォルトの名無しさん [2022/09/01(木) 14:53:42.59 ID:EyFcbtIt.net]
955さんでした...ごめんなさい

971 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 21:32:28.04 ID:P4dKpTai.net]
文字列処理は、Ruby で書いて、
コマンドプロンプト・Power Shell から呼び出す

これが間違いない。
バグる事もない

日本の人工衛星でも、文字列処理の部分を組み込みのmruby で作ったりする。
こういう処理をCで作ると、ややこしくてバグるから

VBS, WSH のピッコロ大魔王は、すごい技術者だよ。
スクレイピングでも、Rubyのクラス・モジュールみたいに、VBScript で作ったりする

VBS から、.NET とか呼び出せるのか

972 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 06:32:40.82 ID:s4Jk55Dy.net]
たかがその程度でそんなことする必要ない

973 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 07:22:53.60 ID:m72Ydqk7.net]
RubyってWindowsデフォで処理できんの?Pythonは?



974 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 09:55:08.52 ID:ly4TfMW8.net]
>>960
動くよ
有料オプションなんていらない

975 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 12:18:58.31 ID:m72Ydqk7.net]
それいいな
Ruby置いておいて.batから呼び出すの超楽じゃん

976 名前:デフォルトの名無しさん [2022/09/03(土) 13:13:17.18 ID:JK72C2wT.net]
mp3をダウンロードして128kにするバッチファイル教えてもらえませんか?
yt-dlpとffpmeg使って色々と試してみてもうまくいきません
ダウンロードしたあとでしたら名前が分かるのでこれで出来たのですけど
ffmpeg -i input.mp3 -vcodec copy -ab 128k output.mp3

977 名前:デフォルトの名無しさん [2022/09/03(土) 13:56:15.90 ID:91ZlUxrs.net]
https://gigazine.net/news/20220624-yt-dlp-download-sections/

978 名前:958 mailto:sage [2022/09/03(土) 15:43:23.43 ID:X5iiwVOT.net]
>>960
ただし、Python, Ruby などのウェブ系言語は、
インターネット・Linux・UTF-8 用に作られているので、
Windows・shift-jis(CP932)の日本語でバグるかも

だから、Linux用のソースコードを、
MSYS2/MinGW でコンパイルして、Windows用にしたものよりも、
WSL2 で、Linuxを動かしたものの方が安全

これは、UTF-8をCP932に変換せず、そのままUTF-8を使っているから安全

漏れが作った感想では、PowerShell, VBScript よりも、
圧倒的に、Rubyが作りやすい。
Rubyの方が、本なども多いし

979 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 21:18:12.82 ID:RxqiahQJ.net]
pythonでも、いけるのか。うむ。

980 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 02:55:46.45 ID:jyBCEVh6.net]
あっというまにうんこうめ

981 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 18:11:08.37 ID:sXKbUVWc.net]
パイプから文字列受け取ってsetする方法って
echo a|for /f %%a in ('more') do set a=%%a
みたいにforでやるか一旦ファイルに書き出すしか無い?
echo a| set /p a="" <pipe
みたいにリダイレクトに繋げてくれるかパイプで流れてくるものに%$_%とか一時変数っぽいものに割り当ててくれたら良いのに
rg.exeが便利すぎて遊んでてふと思った

982 名前:デフォルトの名無しさん mailto:sage [2022/09/12(月) 23:31:40.49 ID:JnviOvBd.net]
rgがcmdで使い物にならなくてショック
パイプで受け取る分には-E sjisで出来るんだけどrgからパイプで次に繋げたりリダイレクトで出力するとascii以外の文字は化ける
これcmd上だとどうにもならない?
https://gith

983 名前:ub.com/BurntSushi/ripgrep/blob/master/FAQ.md#pipe-non-ascii-windows []
[ここ壊れてます]



984 名前:デフォルトの名無しさん mailto:sage [2022/09/13(火) 10:43:09.25 ID:C/JjoHd5.net]
文字コードの問題なら
一旦nkf32でも中継させて文字コード変換して読み直すとか?

985 名前:デフォルトの名無しさん mailto:sage [2022/09/13(火) 13:50:58.24 ID:8ckY0WFW.net]
chcp 65001
して全部 utf8 でやっちゃう
utf8 のバッチファイルで行末が2バイト文字だとエラーに
なるんで、そういうのは行末に . とかで回避

986 名前:デフォルトの名無しさん mailto:sage [2022/09/13(火) 19:02:32.59 ID:BFM47HY2.net]
>>970
試してみたら行けました
でも入力を指定出来ないのがちょっと不安、と思っていたら期待される入力のオプションありました
現状それしか無いかもですね
rgを多段に使う場合は最初と最期だけ変換すればrgの-Eオプションも省けて良いかも
でも手軽さにケチ付いたみたいなのが引っかかります。。

>>971
utf-8だと機能しないコマンドもあるのでその確認がちょっと大変です

お二方ともレスありがとうございました

987 名前:デフォルトの名無しさん mailto:sage [2022/09/13(火) 20:01:05.07 ID:gJ1f0QwF.net]
ちょっと大変どころじゃないけど
UTF-8とかの時点でPowershell検討しなよ

988 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 02:23:02.40 ID:ifExYD0i.net]
分かっていると思うけど
nkf等で変換しても変換不可の文字が欠落するので注意

989 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 02:38:59.13 ID:d7brrjLd.net]
えっ?いや全然分かってないです
sjis → utf-8 → sjis
で欠落する文字って在るのでしょうか?
半角カナはxオプションで維持可能でした

990 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 02:51:18.58 ID:ifExYD0i.net]
元がsjisならいいと思いますたぶん

991 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 09:41:51.82 ID:t44Y6QQe.net]
>>974
そう、完璧版nkfがあるといい

992 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 09:45:41.31 ID:bQ7RTOjb.net]
コンソールアプリでパイプの時点で色々諦めなきゃね
rg.exeとやらはwinforms版はないの?オプソだよね?

993 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
完璧版nkfとは、どのようなものになるのでしょうか?
UTF-8、UTF-16対応?
文字コードによって存在する文字(というかコード?)にどう対応すればよいのでしょうね?



994 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
フォルダ a:\xxx を
a:\yyy の下に移動して
a:\yyy\xxx とするのはどうやりますか?

995 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 19:24:16.59 ID:ifExYD0i.net]
move

996 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 19:57:29.62 ID:XL8H98jz.net]
move a:\xxx\*.* a:\xxx\yyy

997 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 19:59:06.71 ID:XL8H98jz.net]
間違えた。

x move a:\xxx\*.* a:\xxx\yyy

o move a:\xxx\*.* a:\yyy\xxx

998 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 20:02:13.40 ID:XL8H98jz.net]
次スレを立てて見ようと思います。
失敗したら、あとのかたお願いします。

999 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 20:05:48.88 ID:XL8H98jz.net]
次スレです。


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

https://mevius.5ch.net/test/read.cgi/tech/1663153441/l50

後の埋めは、よろしくお願いします。

1000 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 20:10:50.57 ID:y9++92To.net]
move a:\xxx a:\yyy
で行けないかな
ダメならxcopyかrobocopyを使う

1001 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 22:44:29.10 ID:XL8H98jz.net]
rem フォルダyyyが無い場合、フォルダyyyを作成。

md a:\xxx\yyy

rem フォルダxxx下にファイルが有る場合。

move a\xxx\*.* a:\xxx\yyy

1002 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 22:45:56.57 ID:XL8H98jz.net]
コピーの場合、

move a\xxx\*.* a:\xxx\yyy

のmoveをcopyにして下さい。

1003 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 07:10:21.66 ID:PHto6B20.net]
md a:\yyy
if not exist a:\yyy\xxx (move a:\xxx a:\yyy) else (
if exist a:\yyy\xxx\nul (
move /-y a:\xxx\* a:\yyy\xxx
for /d %%i in (a:\xxx\*) do move "%%i" a:\yyy\xxx
rd a:\xxx ))

既存のため移動できない物はa:\xxxに残るので名前変更して再実行



1004 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 12:53:39.30 ID:EPORcPim.net]
それで、>>980さんは、解決したのでしょうか。
後は、埋めてしまいますよ。

1005 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 12:54:46.51 ID:EPORcPim.net]
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1663153441/l50

1006 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 12:55:30.56 ID:EPORcPim.net]
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1663153441/l50

1007 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 12:55:52.67 ID:EPORcPim.net]
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1663153441/l50

1008 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 12:56:19.20 ID:EPORcPim.net]
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1663153441/l50

1009 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 12:56:42.68 ID:EPORcPim.net]
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1663153441/l50

1010 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 12:57:04.06 ID:EPORcPim.net]
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1663153441/l50

1011 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 12:57:29.87 ID:EPORcPim.net]
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1663153441/l50

1012 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 13:08:18.56 ID:EPORcPim.net]
埋め

1013 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 13:08:47.98 ID:EPORcPim.net]
埋め



1014 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 13:09:27.18 ID:EPORcPim.net]
また、いつの日にか、相まみえん。

1015 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 761日 6時間 9分 1秒

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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<297KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef