22/07/09 18:49:52.57 qkG/5q2Z.net
>>872
実はやりたいことがこれ以上の事は無いのでバッチレベルで可能だろうと思ったのですが
配列?の使い方がよく分からず質問しました
ひとまず一時ファイル出力して使いまわす形にしようと思います
ちなみに某APIとはスマートリモコンNature Remoの事です
886:デフォルトの名無しさん
22/07/09 18:54:25 NvGIH30g.net
powershellに一票
乗り換えを先延ばしにすればするほど損が積み上がる
887:デフォルトの名無しさん
22/07/09 18:59:09 NvGIH30g.net
判断のポイントはクッソ不便なbatを捨ててだいぶマシなpsに以降する時期をいつまで先延ばしにするかだけだと思う
888:デフォルトの名無しさん
22/07/09 18:59:46 qkG/5q2Z.net
時間ある時に勉強してみたいと思います>PowerShell
ググったらWin7時代から標準であってOSSになっててLinuxでも実行可能とか知りませんでした
割と長く銀行系にいるので頭が古いんでしょうね…
889:デフォルトの名無しさん
22/07/09 20:00:42.46 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
22/07/09 20:05:46 al4zTytR.net
>>877
修正
>command = `curl #{ url }`
command = "curl #{ url }"
891:デフォルトの名無しさん
22/07/09 21:46:59.61 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:デフォルトの名無しさん
22/07/21 23:21:25.81 3neYOO2a.net
set /a の結果とか与えた数値を16進表記に変換するコマンドか何か良い方法があったら教えて欲しいです
893:デフォルトの名無しさん
22/07/22 01:02:07.69 bfkyQVXg.net
>>880
bc.exe
894:デフォルトの名無しさん
22/07/22 01:14:08.48 bfkyQVXg.net
URLリンク(linuxjm.osdn.jp)
URLリンク(gnuwin32.sourceforge.net)
895:デフォルトの名無しさん
22/07/22 01:32:20.92 bfkyQVXg.net
@echo off
set /a a=123*456
echo a=%a%; obase=16; a | bc
pause
896:デフォルトの名無しさん
22/07/22 01:42:01.70 bfkyQVXg.net
echo obase=16; %a% | bc
でもいい
897:デフォルトの名無しさん
22/07/22 07:47:11.80 bfkyQVXg.net
set /a なら値は高々32ビットだよね
bc は不要かも
cmd /c exit /b %a%
echo %=ExitCode%
898:デフォルトの名無しさん
22/07/22 10:43:07.05 LvB8fWz+.net
ダントツ遅いが
powershell -c "'{0:x}' -f 255"
899:デフォルトの名無しさん
22/07/22 10:45:53.90 CXcliooi.net
obaseとかbcとか知らないことがいっぱい出ているな
900:デフォルトの名無しさん
22/07/22 11:33:23.34 RIaxNIcl.net
888
901:デフォルトの名無しさん
22/07/22 13:09:13.02 ZzUgbaoD.net
わざわざバッチでやるってことを理解してないアホがいる
pythonでも入れてろゴミ
902:デフォルトの名無しさん
22/07/22 13:12:16.30 P7NcnZ58.net
batだけで計算しても理解はされないだろうよ
903:デフォルトの名無しさん
22/07/22 15:55:27.20 bfkyQVXg.net
>>885 はバッチだけだよ
もし桁数が多いのをやりたいなら
過去のスレを探したらバッチがあるよ
904:デフォルトの名無しさん
22/07/22 18:11:09.86 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:デフォルトの名無しさん
22/07/22 19:27:14.02 bfkyQVXg.net
話変わるけど右シフトのすぐ右の数字は危険だよね
アンカーに解釈されるので2chで数値が変わる場合があるんだよ
906:デフォルトの名無しさん
22/07/22 22:42:20.46 AXmcGRlR.net
>>885,886,892
ありがとうございました
powershellは2回目以降だとそんなでも無いですが初回はどうしても遅くなるみたいですね
>>881-884
readline5.dll というのを落としてbcと同じ場所に置くことで動きました
日本語ヘルプ(URLリンク(linuxjm.osdn.jp))が凄く助かりました!
echo sqrt(2) | bc -l
echo scale=10; 4*a(1) | bc -l
とかバッチに無い計算が出来て感動。面白かったのですがパイプで式を渡す時""で括れないので^&|などのメタ文字を
echo 8^^^^2 | bc
echo 8^^^&^^^&2 | bc
とか^エスケープしなければならないのが使いにくいのと
scaleで小数点以下桁数指定出来るのは良いのですが最下桁が四捨五入でも切り捨て切り上げでも無く変な値になったりとかが
惜しい感じですね
エスケープはファイルにして読ませれば良いし最下桁は自力で切り捨てれば良いだけですのでいずれ何かで役立つかも
ありがとうございました
907:デフォルトの名無しさん
22/07/23 09:18:41.04 WQSCizyX.net
エスケープは入力要求メッセージ(末尾改行無し)を使って回避する方法がある。
<nul set /p "=8^2" | ~
※もし行(末尾に改行)が必要なら
<nul set /p "=8^2" | more | ~
908:デフォルトの名無しさん
22/07/23 10:55:51 obFo1BRC.net
>>894
set "a=8^^2" & echo %%a%% | bc
909:デフォルトの名無しさん
22/07/24 07:30:05.93 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:デフォルトの名無しさん
22/08/13 20:26:36.34 hShn1n51.net
コマンドからリモートホスト名とそのIPを取得出来ますか?
911:デフォルトの名無しさん
22/08/14 12:49:48.16 WvMv+Qf8.net
nslookup … DNSで調べる
ping … hostsとか諸々込みで実際にどう名前解決されるか
nbtstat … NETBIOS名なら
netstat … 通信で実際に使ってる自端末と相手のIPアドレス
ipconfig … 自端末の諸々
netsh … 自端末の諸々
912:898
22/08/14 18:43:42.99 0tA/3KXA.net
各コマンドのヘルプ見たり試してみたけど良く分からなかった
WAN側IPとそのホスト名をコマンドから知れないか?を知りたかったんだけど無理そうですか?
nslookupで引数にIP指定すればホスト名は取れるんだけどIPをどうやって知ったら良いものか
913:デフォルトの名無しさん
22/08/14 19:35:36.51 R62l2k+7.net
>>900
状況がよくわからん
「WAN側IP」とか言ってるから自宅(自社)のルーターを自宅(自社)のLAN側から知りたいという話?
914:デフォルトの名無しさん
22/08/14 19:37:41.23 WvMv+Qf8.net
インターネット上の相手側から見える、自WANのWAN側IPアドレスって事?
例えば自端末がオンラインゲームのホストになる際に相手に教えるIPアドレス。
WAN側機器のWeb管理コンソールとか、
「診断くん」等のWebサービスをスクレイピングすればいいよ。
探せばAPIサービスなんかもあるかもね。
※Webサービス使うときは利用規約をよく読んでね。
既にIPアドレス知る方法を1つは知ってるようだから、その方法でもいいよ。
915:デフォルトの名無しさん
22/08/14 19:49:12.00 3lHTKQ6A.net
ホスト名とは何かという定義が必要だな
WEBサーバーなら複数のホスト名(URLのドメインパート)で同じ(時には複数の)サーバーに接続する
URLリンク(5ch.net)でアクセスされるサーバーなら 5ch.net がホスト名だが
同じサーバーが他のドメインもホストしているなら、他のホスト名も持っていることになる
あるサーバーが、接続され得るすべてのホスト名を知りたいと思っても、それは世界中のDNSの勝手なの、
漏れなく調べるためには、世界中のすべてのドメインのレコードを調べる必要があるので、実際には無理。
DNSの逆引きは、それを設定している人が必要な分を登録しているだけなので、すべてとは言い切れない。
916:デフォルトの名無しさん
22/08/14 20:04:12.33 zcJ+8Zbe.net
>>900
現在接続形態で多いのが、ルータの下にローカルネットワークでPCが繋がっているというもの
この場合、PCからはローカルネットワークが全てでありIPアドレスもローカルIPアドレスが使われる
グローバルWAN側のIPアドレスを知りたいのなら
ルータにログインしてアクセスして情報を貰うか、
webのIPアドレスを教えてくれるサイトから情報を取ることになる
つまり>>902の言うとおり
917:デフォルトの名無しさん
22/08/14 20:07:44.49 0tA/3KXA.net
そうです。自分のインターネット側のIP
ルーター管理画面のWAN側IPです
これをコマンド(LAN側のマシン)から調べる方法が無いのかなって
> Webサービスをスクレイピング
これってコマンドでやる方法あります?
NECのなんですけどルーター管理画面から取れるのかな?
ちょっとググったりしてみましたけど簡単なバッチくらいしか使えない自分にはハードル高いかも
918:デフォルトの名無しさん
22/08/14 22:44:27.94 zcJ+8Zbe.net
>>905
curl.exeを持ってこないといけないけど
診断君のスクレイピングだと
@echo off
curl.exe URLリンク(taruo.net) -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:デフォルトの名無しさん
22/08/14 22:55:35.81 zcJ+8Zbe.net
>>905
何も要らないが、powershellを使わないといけない
(なおwebアクセスで診断君以外ではtls1.2を有効にしないとダメなことが多い)
$res = wget URLリンク(taruo.net)
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:デフォルトの名無しさん
22/08/15 00:00:17.27 xwOg3pSS.net
>>906-907
ありがとうございます
curl.exe はなぜか 7.55.1.0 が system32に入ってました
参考にルーター管理画面から取得出来ないか試して無理だったら使わせて頂きます
921:デフォルトの名無しさん
22/08/15 02:02:49.45 xwOg3pSS.net
お陰様でコマンドから確認出来るようになりました。この度は本当にありがとうございました
for /f "skip=301 tokens=4 delims=< " %a in ('curl URLリンク(admin:admin@192.168.0.1) -s') do (for /f "skip=3 tokens=2" %b in ('nslookup %a') do @echo %b)&pause
pauseからCtrl+Cで止めているのですが、breakはバッチでgotoしないと無理ですよね?
922:デフォルトの名無しさん
22/08/15 08:55:40.32 3ogXO4Oz.net
call :ラベル名 で処理を呼び出して exit /b を break として使うこともできるよ
923:デフォルトの名無しさん
22/08/15 21:05:50.46 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:デフォルトの名無しさん
22/08/16 15:31:14.62 RClv+rPW.net
>>911
for /f "tokens=5 delims=< " %a in ('curl URLリンク(admin:admin@192.168.0.1) -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:デフォルトの名無しさん
22/08/27 21:14:13.99 S8eeCUJc.net
文字列の入った変数から、その文字数を高速に取得したいんですが
なにか良い方法はありますか? 上限は8189です
926:デフォルトの名無しさん
22/08/27 22:59:03.27 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:デフォルトの名無しさん
22/08/27 23:07:32.10 S8eeCUJc.net
>>914
ありがとうございます。参考にさせていただきます
ちなみに8189はcmdの仕様による限界です
928:デフォルトの名無しさん
22/08/27 23:22:13.27 VY6ZsFbR.net
>>913
> 高速に取得したい
バッチでやるのはやめた方がいいかと
929:デフォルトの名無しさん
22/08/27 23:24:42.08 OpG+r6e/.net
setだかcmdの構文解析だかの引数の文字数上限が8191 (0x1fff) とかで "s=" で2文字必要だから8189とかだったかな
変数名が単一文字で無かったり "" で囲ったりしても使用可能文字数減るはずだし
forやifの中で展開出来なかったりしたと思うから
限界探るなら一見使えているように見えてもちゃんと確認しといた方が良いよ
930:デフォルトの名無しさん
22/08/27 23:49:06.77 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:デフォルトの名無しさん
[ここ壊れてます] .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:デフォルトの名無しさん
[ここ壊れてます] .net
なるほどなー
set n=!a! や set /a "a=n-(1<<%%i)"
これがパッと出て来るなんて頭良いですね
934:デフォルトの名無しさん
22/08/28 10:26:23.19 +w1wfoOM.net
たとえばファイルサイズを
%~z1 でなくfilename.sizeみたいなわかりやすい書き方に
する方法はないですか
935:デフォルトの名無しさん
22/08/28 10:36:37.74 FcIb+N5t.net
バッチファイルにわかりやすい書き方なんてものがあったら、俺の髪はもっと残ってた
936:デフォルトの名無しさん
22/08/28 11:08:55.91 CaouF0NP.net
バッチの基本的な考え方としては基本コマンドにこだわらず外部コマンドを呼ぶことだと思う
セキュリティ的に外部コマンドは入れられないといった制約があるならこのレガシーツールを使い続けるのは無理がある
現実解のひとつはPowershellのワンライナーを呼ぶことで
そうやって少しずつ学んでるうちに段階的にbatを卒業することだと思う
937:デフォルトの名無しさん
22/08/28 11:23:21.78 +w1wfoOM.net
>>923
ありがとうございます
やはり無理なのか、aliasesなどを使った名案があればいいのに
Powershellはコマンド名が長すぎて使う気になれない
外部コマンドやツ-ルを使えば簡単でもセキュリティ的に問題があるかわからないので使いたくない場合がある
938:デフォルトの名無しさん
22/08/28 11:41:21.61 3aiLuiYL.net
エイリアスもどきはあるよ
マクロファイルに定義を書いておいて一斉に登録することもできる
doskey /?
あとpowershellにはエイリアスがある
939:デフォルトの名無しさん
22/08/28 15:23:54.30 CaouF0NP.net
Powershellは単に慣れと食わず嫌いの問題やね
cmdも無数の気持ち悪いルールがあるし現にたかが文字を数えるだけで呪文めいたコードが必要になってる
何にせよ人間慣れれば気にならなくなるもの
さすがにあと5年で定年だからプログラミングしなくなりますなんて老人には勧めんけどね
コマンドの長さとエイリアスについては
俺はGet-ChildItemはダルいからdirやlsと書くし
ForEach-Objectの代わりに%と書き続けてる
940:デフォルトの名無しさん
22/08/28 15:36:49.18 3aiLuiYL.net
powershellの弱点は初期起動に時間が掛かるという点だね
通常的にpowershellを使ってるならいいけど、
それこそ特定の処理だけたまに使うという人にはそこがネックになる
そういう場合はもうオブソリュートだがWSHがいい仕事をする
941:デフォルトの名無しさん
22/08/28 17:28:34.01 hYNZdTyV.net
>>921 わかりやすい変数に代入すれば?
942:デフォルトの名無しさん
22/08/28 19:39:30.66 TtkhtxSa.net
底辺ドカタがアイデンティティ護ろうと必死だけど必死に見られたくない虚栄心とのせめぎ合いが垣間見えてワラw
943:デフォルトの名無しさん
22/08/28 19:49:06.93 hYNZdTyV.net
エイリアス無いし
batを使いたいなら騙しながらやるしかないだろ
944:デフォルトの名無しさん
22/08/29 03:05:26.48 Rm8LZ6WJ.net
>>924
ほんとはvbsが起動も速度も速い上にバッチやps程変な癖もなくていわゆるVB脳程度の知識でそこそこのものが手軽に書けるんだよ
ただこの板にあるスレが一言で言えば気持ち悪いから誰も触れないのよ
よくvbsはオワコンて言われるけど少なくとも2029年までは標準で使えるから安心していいよ
945:デフォルトの名無しさん
22/08/29 04:54:03.93 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:デフォルトの名無しさん
22/08/29 07:10:34.83 ZvttE7Ov.net
変数に代入出来るのが8000でも
set/pで入力出来るのは1000ほどしかないな
文字数が多いと色々と落とし穴ありそう
947:デフォルトの名無しさん
22/08/30 16:27:10.19 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:デフォルトの名無しさん
22/08/30 20:51:26.64 Qtk7w0l/.net
もう質問者はいないぞ
949:デフォルトの名無しさん
22/08/30 23:17:38.91 +Bm8wCSm.net
素人なんだけど >>919 みたいなのってプログラマだったら知っていて当然の定番のロジック?アルゴリズム?だったりするん?
950:デフォルトの名無しさん
22/08/31 00:08:53.66 F2h2Wpm0.net
>>936
やってることはただの2分探索だよ
アルゴリズムの本とか一通り読んでれば思いつくよ
特にシフト使ったちまちましたことは組み込みプログラマが得意だろう
951:デフォルトの名無しさん
22/08/31 05:05:19.96 I3t0py3T.net
>>936
アルゴリズム自体はまあ知ってて当然レベル
それをバッチで実装するのはなかなか凄いと思う
952:デフォルトの名無しさん
22/08/31 06:19:56.53 IktOvXlL.net
個人的にはforの入れ子がおもしろい。そんな方法があるのかと思った。
普通そこはcallを考えるけど、そうすると速度が落ちるのかな
953:デフォルトの名無しさん
22/08/31 20:20:14.08 TgQJCwr4.net
言語にっよっては文字数を数える関数とかがあるけど、こういう手法を駆使してるん?
954:デフォルトの名無しさん
22/08/31 21:42:17.85 /4IK1Kkc.net
%%iをカウントダウンさせて変数一つ省略させてるのが美しいわ
955:デフォルトの名無しさん
22/08/31 23:00:05.56 dYVvh+jC.net
>>940
頭から数えるか、文字列型に文字数の情報も持たせてる
x文字目を1文字切り出して有るか無いかっていうのは結局言語側で文字数わかってないとだめなわけで
956:デフォルトの名無しさん
22/08/31 23:03:12.74 FwIzrDsl.net
可変長の文字コードが一般的だから、先頭から数えないと文字数はわからない
957:デフォルトの名無しさん
22/08/31 23:25:40.84 8OAd82SA.net
942の言う通り言語や型によっては文字数を予め持たせてるよ
最初に一度だけカウントしてメモっておけば何度も数え直す必要がない
958:デフォルトの名無しさん
22/08/31 23:41:16.72 IktOvXlL.net
C言語のstrlenだと単純に先頭から0を探すだけ
末尾以降のメモリは0とは限らない。ゴミだらけ
959:デフォルトの名無しさん
22/09/01 05:31:13.24 dRjt3+vQ.net
>>944
文字数を保持してる言語ってあるの?
たいていバイト数だと思ったけど
960:デフォルトの名無しさん
22/09/01 10:54:06.41 KDf3jCCr.net
たぶんだけど
内部表現がUTF-8みたいな可変長(Perl等)ならバイト数じゃなくて文字数で持ってると思う。
内部表現がUTF-16みたいな固定長(.NET等)でバイト数÷2が文字数になる言語だと、
「取得毎に÷2(右シフト)の負荷」をとるか
「常に文字数保持のメモリ消費」をとるかは言語による気がする。※まあ後者かな。
961:デフォルトの名無しさん
22/09/01 11:14:11.70 BOpcWEhd.net
if definedはあるが、if not definedはエラーになることを発見した
962:デフォルトの名無しさん
22/09/01 11:34:31.15 KDf3jCCr.net
ならんが
963:デフォルトの名無しさん
22/09/01 12:10:09.24 BOpcWEhd.net
>>949
すみません、ミスでした
おかしいな
964:デフォルトの名無しさん
22/09/01 14:31:17.40 EyFcbtIt.net
初心者です
[曲名].mp3 の様に
曲名をカッコで囲んでファイル名を出力する方法はどうしたらよいのでしょうか?
-o "%%(title)s.%%(ext)s"
ここの()を[]に変えてもダメでした
お時間ある方いらっしゃいましたらよろしくお願い致します。
965:デフォルトの名無しさん
22/09/01 14:33:44.02 5NMGBymZ.net
多分こっちのスレで聞いた方がいい
【DL】動画の保存方法総合スレ【アダルト禁止】part51
スレリンク(streaming板)
966:デフォルトの名無しさん
22/09/01 14:37:30.33 EyFcbtIt.net
952さん
教えてくれてありがとうございます
失礼いたしました
967:デフォルトの名無しさん
22/09/01 14:41:09.20 EyFcbtIt.net
教えて頂いた所は書き込みできませんでした><;
968:デフォルトの名無しさん
22/09/01 14:42:55.59 5NMGBymZ.net
今出先だから試せないけど多分こうかな
-o "[%%(title)s].%%(ext)s"
969:デフォルトの名無しさん
22/09/01 14:52:40.78 EyFcbtIt.net
599さん出来ました♪
親切に教えてくれてありがとうございました
感謝です(*- -)(*_ _)ペコリ
970:デフォルトの名無しさん
22/09/01 14:53:42.59 EyFcbtIt.net
955さんでした...ごめんなさい
971:デフォルトの名無しさん
22/09/01 21:32:28.04 P4dKpTai.net
文字列処理は、Ruby で書いて、
コマンドプロンプト・Power Shell から呼び出す
これが間違いない。
バグる事もない
日本の人工衛星でも、文字列処理の部分を組み込みのmruby で作ったりする。
こういう処理をCで作ると、ややこしくてバグるから
VBS, WSH のピッコロ大魔王は、すごい技術者だよ。
スクレイピングでも、Rubyのクラス・モジュールみたいに、VBScript で作ったりする
VBS から、.NET とか呼び出せるのか
972:デフォルトの名無しさん
22/09/02 06:32:40.82 s4Jk55Dy.net
たかがその程度でそんなことする必要ない
973:デフォルトの名無しさん
22/09/02 07:22:53.60 m72Ydqk7.net
RubyってWindowsデフォで処理できんの?Pythonは?
974:デフォルトの名無しさん
22/09/02 09:55:08.52 ly4TfMW8.net
>>960
動くよ
有料オプションなんていらない
975:デフォルトの名無しさん
22/09/02 12:18:58.31 m72Ydqk7.net
それいいな
Ruby置いておいて.batから呼び出すの超楽じゃん
976:デフォルトの名無しさん
22/09/03 13:13:17.18 JK72C2wT.net
mp3をダウンロードして128kにするバッチファイル教えてもらえませんか?
yt-dlpとffpmeg使って色々と試してみてもうまくいきません
ダウンロードしたあとでしたら名前が分かるのでこれで出来たのですけど
ffmpeg -i input.mp3 -vcodec copy -ab 128k output.mp3
977:デフォルトの名無しさん
22/09/03 13:56:15.90 91ZlUxrs.net
URLリンク(gigazine.net)
978:958
22/09/03 15:43:23.43 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:デフォルトの名無しさん
22/09/06 21:18:12.82 RxqiahQJ.net
pythonでも、いけるのか。うむ。
980:デフォルトの名無しさん
22/09/10 02:55:46.45 jyBCEVh6.net
あっというまにうんこうめ
981:デフォルトの名無しさん
22/09/11 18:11:08.37 sXKbUVWc.net
パイプから文字列受け取ってsetする方法って
echo a|for /f %%a in ('more') do set a=%%a
みたいにforでやるか一旦ファイルに書き出すしか無い?
echo a| set /p a="" <pipe
みたいにリダイレクトに繋げてくれるかパイプで流れてくるものに%$_%とか一時変数っぽいものに割り当ててくれたら良いのに
rg.exeが便利すぎて遊んでてふと思った
982:デフォルトの名無しさん
22/09/12 23:31:40.49 JnviOvBd.net
rgがcmdで使い物にならなくてショック
パイプで受け取る分には-E sjisで出来るんだけどrgからパイプで次に繋げたりリダイレクトで出力するとascii以外の文字は化ける
これcmd上だとどうにもならない?
URLリンク(gith)
983:ub.com/BurntSushi/ripgrep/blob/master/FAQ.md#pipe-non-ascii-windows
984:デフォルトの名無しさん
22/09/13 10:43:09.25 C/JjoHd5.net
文字コードの問題なら
一旦nkf32でも中継させて文字コード変換して読み直すとか?
985:デフォルトの名無しさん
22/09/13 13:50:58.24 8ckY0WFW.net
chcp 65001
して全部 utf8 でやっちゃう
utf8 のバッチファイルで行末が2バイト文字だとエラーに
なるんで、そういうのは行末に . とかで回避
986:デフォルトの名無しさん
22/09/13 19:02:32.59 BFM47HY2.net
>>970
試してみたら行けました
でも入力を指定出来ないのがちょっと不安、と思っていたら期待される入力のオプションありました
現状それしか無いかもですね
rgを多段に使う場合は最初と最期だけ変換すればrgの-Eオプションも省けて良いかも
でも手軽さにケチ付いたみたいなのが引っかかります。。
>>971
utf-8だと機能しないコマンドもあるのでその確認がちょっと大変です
お二方ともレスありがとうございました
987:デフォルトの名無しさん
22/09/13 20:01:05.07 gJ1f0QwF.net
ちょっと大変どころじゃないけど
UTF-8とかの時点でPowershell検討しなよ
988:デフォルトの名無しさん
22/09/14 02:23:02.40 ifExYD0i.net
分かっていると思うけど
nkf等で変換しても変換不可の文字が欠落するので注意
989:デフォルトの名無しさん
22/09/14 02:38:59.13 d7brrjLd.net
えっ?いや全然分かってないです
sjis → utf-8 → sjis
で欠落する文字って在るのでしょうか?
半角カナはxオプションで維持可能でした
990:デフォルトの名無しさん
22/09/14 02:51:18.58 ifExYD0i.net
元がsjisならいいと思いますたぶん
991:デフォルトの名無しさん
22/09/14 09:41:51.82 t44Y6QQe.net
>>974
そう、完璧版nkfがあるといい
992:デフォルトの名無しさん
22/09/14 09:45:41.31 bQ7RTOjb.net
コンソールアプリでパイプの時点で色々諦めなきゃね
rg.exeとやらはwinforms版はないの?オプソだよね?
993:デフォルトの名無しさん
[ここ壊れてます] .net
完璧版nkfとは、どのようなものになるのでしょうか?
UTF-8、UTF-16対応?
文字コードによって存在する文字(というかコード?)にどう対応すればよいのでしょうね?
994:デフォルトの名無しさん
[ここ壊れてます] .net
フォルダ a:\xxx を
a:\yyy の下に移動して
a:\yyy\xxx とするのはどうやりますか?
995:デフォルトの名無しさん
22/09/14 19:24:16.59 ifExYD0i.net
move
996:デフォルトの名無しさん
22/09/14 19:57:29.62 XL8H98jz.net
move a:\xxx\*.* a:\xxx\yyy
997:デフォルトの名無しさん
22/09/14 19:59:06.71 XL8H98jz.net
間違えた。
x move a:\xxx\*.* a:\xxx\yyy
o move a:\xxx\*.* a:\yyy\xxx
998:デフォルトの名無しさん
22/09/14 20:02:13.40 XL8H98jz.net
次スレを立てて見ようと思います。
失敗したら、あとのかたお願いします。
999:デフォルトの名無しさん
22/09/14 20:05:48.88 XL8H98jz.net
次スレです。
【.cmd】 バッチファイルスクリプト %15 【.bat】
スレリンク(tech板)
後の埋めは、よろしくお願いします。
1000:デフォルトの名無しさん
22/09/14 20:10:50.57 y9++92To.net
move a:\xxx a:\yyy
で行けないかな
ダメならxcopyかrobocopyを使う
1001:デフォルトの名無しさん
22/09/14 22:44:29.10 XL8H98jz.net
rem フォルダyyyが無い場合、フォルダyyyを作成。
md a:\xxx\yyy
rem フォルダxxx下にファイルが有る場合。
move a\xxx\*.* a:\xxx\yyy
1002:デフォルトの名無しさん
22/09/14 22:45:56.57 XL8H98jz.net
コピーの場合、
move a\xxx\*.* a:\xxx\yyy
のmoveをcopyにして下さい。
1003:デフォルトの名無しさん
22/09/15 07:10:21.66 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:デフォルトの名無しさん
22/09/15 12:53:39.30 EPORcPim.net
それで、>>980さんは、解決したのでしょうか。
後は、埋めてしまいますよ。
1005:デフォルトの名無しさん
22/09/15 12:54:46.51 EPORcPim.net
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
スレリンク(tech板)
1006:デフォルトの名無しさん
22/09/15 12:55:30.56 EPORcPim.net
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
スレリンク(tech板)
1007:デフォルトの名無しさん
22/09/15 12:55:52.67 EPORcPim.net
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
スレリンク(tech板)
1008:デフォルトの名無しさん
22/09/15 12:56:19.20 EPORcPim.net
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
スレリンク(tech板)
1009:デフォルトの名無しさん
22/09/15 12:56:42.68 EPORcPim.net
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
スレリンク(tech板)
1010:デフォルトの名無しさん
22/09/15 12:57:04.06 EPORcPim.net
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
スレリンク(tech板)
1011:デフォルトの名無しさん
22/09/15 12:57:29.87 EPORcPim.net
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
スレリンク(tech板)
1012:デフォルトの名無しさん
22/09/15 13:08:18.56 EPORcPim.net
埋め
1013:デフォルトの名無しさん
22/09/15 13:08:47.98 EPORcPim.net
埋め
1014:デフォルトの名無しさん
22/09/15 13:09:27.18 EPORcPim.net
また、いつの日にか、相まみえん。
1015:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 761日 6時間 9分 1秒
1016:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています