[過去ログ] 【.cmd】 バッチファイルスクリプト %14 【.bat】 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(1): 2020/08/15(土)07:00 ID:f3kW5kCx(1) AAS
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです
※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう
過去スレ
%13 2chスレ:tech
%12 2chスレ:tech
%11 2chスレ:tech
%10 2chスレ:tech
%9 2chスレ:tech
%8 2chスレ:tech
%7 2chスレ:tech
%6 2chスレ:tech
%5 2chスレ:tech
%4 2chスレ:tech
%3 2chスレ:tech
%2 2chスレ:tech
【.cmd】 バッチファイルスクリプト %1 【.bat】
2chスレ:tech
バッチファイルプログラミング 3.bat
2chスレ:tech
バッチファイルプログラミング 2.bat
2chスレ:tech
バッチファイルプログラミング質問スレ
2chスレ:tech
876: 2022/07/09(土)18:59 ID:qkG/5q2Z(6/6) AAS
時間ある時に勉強してみたいと思います>PowerShell
ググったらWin7時代から標準であってOSSになっててLinuxでも実行可能とか知りませんでした
割と長く銀行系にいるので頭が古いんでしょうね…
877(1): 2022/07/09(土)20:00 ID:al4zTytR(1/2) AAS
Ruby では、外部コマンドのcurl を呼び出さなくてもできる
require 'open-uri'
require 'json'
url = '外部リンク:hex12316' # 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 )
878: 877 2022/07/09(土)20:05 ID:al4zTytR(2/2) AAS
>>877
修正
>command = `curl #{ url }`
command = "curl #{ url }"
879: 2022/07/09(土)21:46 ID:3uODqf9z(1) AAS
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
880(1): 2022/07/21(木)23:21 ID:3neYOO2a(1) AAS
set /a の結果とか与えた数値を16進表記に変換するコマンドか何か良い方法があったら教えて欲しいです
881(1): 2022/07/22(金)01:02 ID:bfkyQVXg(1/7) AAS
>>880
bc.exe
882(1): 2022/07/22(金)01:14 ID:bfkyQVXg(2/7) AAS
外部リンク[html]:linuxjm.osdn.jp
外部リンク[htm]:gnuwin32.sourceforge.net
883(1): 2022/07/22(金)01:32 ID:bfkyQVXg(3/7) AAS
@echo off
set /a a=123*456
echo a=%a%; obase=16; a | bc
pause
884(1): 2022/07/22(金)01:42 ID:bfkyQVXg(4/7) AAS
echo obase=16; %a% | bc
でもいい
885(2): 2022/07/22(金)07:47 ID:bfkyQVXg(5/7) AAS
set /a なら値は高々32ビットだよね
bc は不要かも
cmd /c exit /b %a%
echo %=ExitCode%
886(1): 2022/07/22(金)10:43 ID:LvB8fWz+(1) AAS
ダントツ遅いが
powershell -c "'{0:x}' -f 255"
887: 2022/07/22(金)10:45 ID:CXcliooi(1) AAS
obaseとかbcとか知らないことがいっぱい出ているな
888: 2022/07/22(金)11:33 ID:RIaxNIcl(1) AAS
888
889: 2022/07/22(金)13:09 ID:ZzUgbaoD(1) AAS
わざわざバッチでやるってことを理解してないアホがいる
pythonでも入れてろゴミ
890: 2022/07/22(金)13:12 ID:P7NcnZ58(1) AAS
batだけで計算しても理解はされないだろうよ
891: 2022/07/22(金)15:55 ID:bfkyQVXg(6/7) AAS
>>885 はバッチだけだよ
もし桁数が多いのをやりたいなら
過去のスレを探したらバッチがあるよ
892(1): 2022/07/22(金)18:11 ID:5WL5LWhS(1) AAS
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入れてる
893: 2022/07/22(金)19:27 ID:bfkyQVXg(7/7) AAS
話変わるけど右シフトのすぐ右の数字は危険だよね
アンカーに解釈されるので2chで数値が変わる場合があるんだよ
894(1): 2022/07/22(金)22:42 ID:AXmcGRlR(1) AAS
>>885,886,892
ありがとうございました
powershellは2回目以降だとそんなでも無いですが初回はどうしても遅くなるみたいですね
>>881-884
readline5.dll というのを落としてbcと同じ場所に置くことで動きました
日本語ヘルプ(外部リンク: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で小数点以下桁数指定出来るのは良いのですが最下桁が四捨五入でも切り捨て切り上げでも無く変な値になったりとかが
惜しい感じですね
エスケープはファイルにして読ませれば良いし最下桁は自力で切り捨てれば良いだけですのでいずれ何かで役立つかも
ありがとうございました
895(1): 2022/07/23(土)09:18 ID:WQSCizyX(1) AAS
エスケープは入力要求メッセージ(末尾改行無し)を使って回避する方法がある。
<nul set /p "=8^2" | 〜
※もし行(末尾に改行)が必要なら
<nul set /p "=8^2" | more | 〜
896: 2022/07/23(土)10:55 ID:obFo1BRC(1) AAS
>>894
set "a=8^^2" & echo %%a%% | bc
897: 2022/07/24(日)07:30 ID:oa53tMxs(1) AAS
>>895
目からウロコなTips
set /p <nul="8^2" | more | bc
で行けました
moreの代わりにfindやfindstrなどパイプで受け取って改行付加して吐けるコマンドなら使えるっぽい。他には以下とか
(set /p <nul="8^2"&echo=) | bc
set /p の改行無しecho の用法は知っていたんだけどこの局面で使える事に思い付けなかったのが悔しい
898(1): 2022/08/13(土)20:26 ID:hShn1n51(1) AAS
コマンドからリモートホスト名とそのIPを取得出来ますか?
899: 2022/08/14(日)12:49 ID:WvMv+Qf8(1/2) AAS
nslookup … DNSで調べる
ping … hostsとか諸々込みで実際にどう名前解決されるか
nbtstat … NETBIOS名なら
netstat … 通信で実際に使ってる自端末と相手のIPアドレス
ipconfig … 自端末の諸々
netsh … 自端末の諸々
900(2): 898 2022/08/14(日)18:43 ID:0tA/3KXA(1/2) AAS
各コマンドのヘルプ見たり試してみたけど良く分からなかった
WAN側IPとそのホスト名をコマンドから知れないか?を知りたかったんだけど無理そうですか?
nslookupで引数にIP指定すればホスト名は取れるんだけどIPをどうやって知ったら良いものか
901: 2022/08/14(日)19:35 ID:R62l2k+7(1) AAS
>>900
状況がよくわからん
「WAN側IP」とか言ってるから自宅(自社)のルーターを自宅(自社)のLAN側から知りたいという話?
902(1): 2022/08/14(日)19:37 ID:WvMv+Qf8(2/2) AAS
インターネット上の相手側から見える、自WANのWAN側IPアドレスって事?
例えば自端末がオンラインゲームのホストになる際に相手に教えるIPアドレス。
WAN側機器のWeb管理コンソールとか、
「診断くん」等のWebサービスをスクレイピングすればいいよ。
探せばAPIサービスなんかもあるかもね。
※Webサービス使うときは利用規約をよく読んでね。
既にIPアドレス知る方法を1つは知ってるようだから、その方法でもいいよ。
903: 2022/08/14(日)19:49 ID:3lHTKQ6A(1) AAS
ホスト名とは何かという定義が必要だな
WEBサーバーなら複数のホスト名(URLのドメインパート)で同じ(時には複数の)サーバーに接続する
外部リンク:5ch.netでアクセスされるサーバーなら 5ch.net がホスト名だが
同じサーバーが他のドメインもホストしているなら、他のホスト名も持っていることになる
あるサーバーが、接続され得るすべてのホスト名を知りたいと思っても、それは世界中のDNSの勝手なの、
漏れなく調べるためには、世界中のすべてのドメインのレコードを調べる必要があるので、実際には無理。
DNSの逆引きは、それを設定している人が必要な分を登録しているだけなので、すべてとは言い切れない。
904: 2022/08/14(日)20:04 ID:zcJ+8Zbe(1/3) AAS
>>900
現在接続形態で多いのが、ルータの下にローカルネットワークでPCが繋がっているというもの
この場合、PCからはローカルネットワークが全てでありIPアドレスもローカルIPアドレスが使われる
グローバルWAN側のIPアドレスを知りたいのなら
ルータにログインしてアクセスして情報を貰うか、
webのIPアドレスを教えてくれるサイトから情報を取ることになる
つまり>>902の言うとおり
905(2): 2022/08/14(日)20:07 ID:0tA/3KXA(2/2) AAS
そうです。自分のインターネット側のIP
ルーター管理画面のWAN側IPです
これをコマンド(LAN側のマシン)から調べる方法が無いのかなって
> Webサービスをスクレイピング
これってコマンドでやる方法あります?
NECのなんですけどルーター管理画面から取れるのかな?
ちょっとググったりしてみましたけど簡単なバッチくらいしか使えない自分にはハードル高いかも
906(1): 2022/08/14(日)22:44 ID:zcJ+8Zbe(2/3) AAS
>>905
curl.exeを持ってこないといけないけど
診断君のスクレイピングだと
@echo off
curl.exe 外部リンク: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%
907(1): 2022/08/14(日)22:55 ID:zcJ+8Zbe(3/3) AAS
>>905
何も要らないが、powershellを使わないといけない
(なおwebアクセスで診断君以外ではtls1.2を有効にしないとダメなことが多い)
$res = wget 外部リンク: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
908: 2022/08/15(月)00:00 ID:xwOg3pSS(1/2) AAS
>>906-907
ありがとうございます
curl.exe はなぜか 7.55.1.0 が system32に入ってました
参考にルーター管理画面から取得出来ないか試して無理だったら使わせて頂きます
909(1): 2022/08/15(月)02:02 ID:xwOg3pSS(2/2) AAS
お陰様でコマンドから確認出来るようになりました。この度は本当にありがとうございました
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しないと無理ですよね?
910: 2022/08/15(月)08:55 ID:3ogXO4Oz(1) AAS
call :ラベル名 で処理を呼び出して exit /b を break として使うこともできるよ
911(1): 2022/08/15(月)21:05 ID:Z47lvB2J(1) AAS
>>909
breakしたい、というか302行目だけ欲しいってことかな。
findstrで行番号振って、さらにfindstrで目的の行だけ取るって方法があるよ。
for /f "tokens=4 delims=< " %a in ('curl 〜 -s^| findstr /rn /c:"^"^| findstr /r /c:"^302:"') do
912: 2022/08/16(火)15:31 ID:RClv+rPW(1) AAS
>>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入れたり明後日のことしてハマってました
目的が何行目か決まっている時は最良の方法かもですね
行番号列挙する必要がありますが複数行でも使えますし
913(2): 2022/08/27(土)21:14 ID:S8eeCUJc(1/2) AAS
文字列の入った変数から、その文字数を高速に取得したいんですが
なにか良い方法はありますか? 上限は8189です
914(1): 2022/08/27(土)22:59 ID:OpG+r6e/(1/3) AAS
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してループさせればいい
915: 2022/08/27(土)23:07 ID:S8eeCUJc(2/2) AAS
>>914
ありがとうございます。参考にさせていただきます
ちなみに8189はcmdの仕様による限界です
916: 2022/08/27(土)23:22 ID:VY6ZsFbR(1) AAS
>>913
> 高速に取得したい
バッチでやるのはやめた方がいいかと
917: 2022/08/27(土)23:24 ID:OpG+r6e/(2/3) AAS
setだかcmdの構文解析だかの引数の文字数上限が8191 (0x1fff) とかで "s=" で2文字必要だから8189とかだったかな
変数名が単一文字で無かったり "" で囲ったりしても使用可能文字数減るはずだし
forやifの中で展開出来なかったりしたと思うから
限界探るなら一見使えているように見えてもちゃんと確認しといた方が良いよ
918: 2022/08/27(土)23:49 ID:OpG+r6e/(3/3) AAS
4096 -> 2048 -> 1024 -> 512 -> 256 -> 128 -> 64 -> 32
if で8回くらい判定させればそれなりに速く出来ると思う
256分割。。
オフセットも変数にしてループするとか
512で真だったら /2 偽だったら *1.5 (set /a N=N/2+N) てな感じで
919(2): 2022/08/28(日)00:01 ID:hYNZdTyV(1/3) AAS
>>913
set s=abcdefg
setlocal enabledelayedexpansion
set n=0 & 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!
920: 2022/08/28(日)00:18 ID:8DkHE3ui(1) AAS
なるほどなー
set n=!a! や set /a "a=n-(1<<%%i)"
これがパッと出て来るなんて頭良いですね
921(1): 2022/08/28(日)10:26 ID:+w1wfoOM(1/2) AAS
たとえばファイルサイズを
%~z1 でなくfilename.sizeみたいなわかりやすい書き方に
する方法はないですか
922: 2022/08/28(日)10:36 ID:FcIb+N5t(1) AAS
バッチファイルにわかりやすい書き方なんてものがあったら、俺の髪はもっと残ってた
923(1): 2022/08/28(日)11:08 ID:CaouF0NP(1/2) AAS
バッチの基本的な考え方としては基本コマンドにこだわらず外部コマンドを呼ぶことだと思う
セキュリティ的に外部コマンドは入れられないといった制約があるならこのレガシーツールを使い続けるのは無理がある
現実解のひとつはPowershellのワンライナーを呼ぶことで
そうやって少しずつ学んでるうちに段階的にbatを卒業することだと思う
924(1): 2022/08/28(日)11:23 ID:+w1wfoOM(2/2) AAS
>>923
ありがとうございます
やはり無理なのか、aliasesなどを使った名案があればいいのに
Powershellはコマンド名が長すぎて使う気になれない
外部コマンドやツ-ルを使えば簡単でもセキュリティ的に問題があるかわからないので使いたくない場合がある
925: 2022/08/28(日)11:41 ID:3aiLuiYL(1/2) AAS
エイリアスもどきはあるよ
マクロファイルに定義を書いておいて一斉に登録することもできる
doskey /?
あとpowershellにはエイリアスがある
926: 2022/08/28(日)15:23 ID:CaouF0NP(2/2) AAS
Powershellは単に慣れと食わず嫌いの問題やね
cmdも無数の気持ち悪いルールがあるし現にたかが文字を数えるだけで呪文めいたコードが必要になってる
何にせよ人間慣れれば気にならなくなるもの
さすがにあと5年で定年だからプログラミングしなくなりますなんて老人には勧めんけどね
コマンドの長さとエイリアスについては
俺はGet-ChildItemはダルいからdirやlsと書くし
ForEach-Objectの代わりに%と書き続けてる
927: 2022/08/28(日)15:36 ID:3aiLuiYL(2/2) AAS
powershellの弱点は初期起動に時間が掛かるという点だね
通常的にpowershellを使ってるならいいけど、
それこそ特定の処理だけたまに使うという人にはそこがネックになる
そういう場合はもうオブソリュートだがWSHがいい仕事をする
928: 2022/08/28(日)17:28 ID:hYNZdTyV(2/3) AAS
>>921 わかりやすい変数に代入すれば?
929: 2022/08/28(日)19:39 ID:TtkhtxSa(1) AAS
底辺ドカタがアイデンティティ護ろうと必死だけど必死に見られたくない虚栄心とのせめぎ合いが垣間見えてワラw
930: 2022/08/28(日)19:49 ID:hYNZdTyV(3/3) AAS
エイリアス無いし
batを使いたいなら騙しながらやるしかないだろ
931: 2022/08/29(月)03:05 ID:Rm8LZ6WJ(1) AAS
>>924
ほんとはvbsが起動も速度も速い上にバッチやps程変な癖もなくていわゆるVB脳程度の知識でそこそこのものが手軽に書けるんだよ
ただこの板にあるスレが一言で言えば気持ち悪いから誰も触れないのよ
よくvbsはオワコンて言われるけど少なくとも2029年までは標準で使えるから安心していいよ
932(1): 2022/08/29(月)04:54 ID:DAjO1ugz(1) AAS
@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させてみたけど
バッチでの文字数カウントとしては最強じゃね?
933: 2022/08/29(月)07:10 ID:ZvttE7Ov(1) AAS
変数に代入出来るのが8000でも
set/pで入力出来るのは1000ほどしかないな
文字数が多いと色々と落とし穴ありそう
934: 2022/08/30(火)16:27 ID:2X2Lv8NW(1) AAS
>>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 文字:在る
935: 2022/08/30(火)20:51 ID:Qtk7w0l/(1) AAS
もう質問者はいないぞ
936(2): 2022/08/30(火)23:17 ID:+Bm8wCSm(1) AAS
素人なんだけど >>919 みたいなのってプログラマだったら知っていて当然の定番のロジック?アルゴリズム?だったりするん?
937: 2022/08/31(水)00:08 ID:F2h2Wpm0(1) AAS
>>936
やってることはただの2分探索だよ
アルゴリズムの本とか一通り読んでれば思いつくよ
特にシフト使ったちまちましたことは組み込みプログラマが得意だろう
938: 2022/08/31(水)05:05 ID:I3t0py3T(1) AAS
>>936
アルゴリズム自体はまあ知ってて当然レベル
それをバッチで実装するのはなかなか凄いと思う
939: 2022/08/31(水)06:19 ID:IktOvXlL(1/2) AAS
個人的にはforの入れ子がおもしろい。そんな方法があるのかと思った。
普通そこはcallを考えるけど、そうすると速度が落ちるのかな
940(1): 2022/08/31(水)20:20 ID:TgQJCwr4(1) AAS
言語にっよっては文字数を数える関数とかがあるけど、こういう手法を駆使してるん?
941: 2022/08/31(水)21:42 ID:/4IK1Kkc(1) AAS
%%iをカウントダウンさせて変数一つ省略させてるのが美しいわ
942: 2022/08/31(水)23:00 ID:dYVvh+jC(1) AAS
>>940
頭から数えるか、文字列型に文字数の情報も持たせてる
x文字目を1文字切り出して有るか無いかっていうのは結局言語側で文字数わかってないとだめなわけで
943: 2022/08/31(水)23:03 ID:FwIzrDsl(1) AAS
可変長の文字コードが一般的だから、先頭から数えないと文字数はわからない
944(1): 2022/08/31(水)23:25 ID:8OAd82SA(1) AAS
942の言う通り言語や型によっては文字数を予め持たせてるよ
最初に一度だけカウントしてメモっておけば何度も数え直す必要がない
945: 2022/08/31(水)23:41 ID:IktOvXlL(2/2) AAS
C言語のstrlenだと単純に先頭から0を探すだけ
末尾以降のメモリは0とは限らない。ゴミだらけ
946: 2022/09/01(木)05:31 ID:dRjt3+vQ(1) AAS
>>944
文字数を保持してる言語ってあるの?
たいていバイト数だと思ったけど
947: 2022/09/01(木)10:54 ID:KDf3jCCr(1/2) AAS
たぶんだけど
内部表現がUTF-8みたいな可変長(Perl等)ならバイト数じゃなくて文字数で持ってると思う。
内部表現がUTF-16みたいな固定長(.NET等)でバイト数÷2が文字数になる言語だと、
「取得毎に÷2(右シフト)の負荷」をとるか
「常に文字数保持のメモリ消費」をとるかは言語による気がする。※まあ後者かな。
948: 2022/09/01(木)11:14 ID:BOpcWEhd(1/2) AAS
if definedはあるが、if not definedはエラーになることを発見した
949(1): 2022/09/01(木)11:34 ID:KDf3jCCr(2/2) AAS
ならんが
950: 2022/09/01(木)12:10 ID:BOpcWEhd(2/2) AAS
>>949
すみません、ミスでした
おかしいな
951: 2022/09/01(木)14:31 ID:EyFcbtIt(1/5) AAS
初心者です
[曲名].mp3 の様に
曲名をカッコで囲んでファイル名を出力する方法はどうしたらよいのでしょうか?
-o "%%(title)s.%%(ext)s"
ここの()を[]に変えてもダメでした
お時間ある方いらっしゃいましたらよろしくお願い致します。
952: 2022/09/01(木)14:33 ID:5NMGBymZ(1/2) AAS
多分こっちのスレで聞いた方がいい
【DL】動画の保存方法総合スレ【アダルト禁止】part51
2chスレ:streaming
953: 2022/09/01(木)14:37 ID:EyFcbtIt(2/5) AAS
952さん
教えてくれてありがとうございます
失礼いたしました
954: 2022/09/01(木)14:41 ID:EyFcbtIt(3/5) AAS
教えて頂いた所は書き込みできませんでした><;
955: 2022/09/01(木)14:42 ID:5NMGBymZ(2/2) AAS
今出先だから試せないけど多分こうかな
-o "[%%(title)s].%%(ext)s"
956: 2022/09/01(木)14:52 ID:EyFcbtIt(4/5) AAS
599さん出来ました♪
親切に教えてくれてありがとうございました
感謝です(*- -)(*_ _)ペコリ
957: 2022/09/01(木)14:53 ID:EyFcbtIt(5/5) AAS
955さんでした...ごめんなさい
958(1): 2022/09/01(木)21:32 ID:P4dKpTai(1) AAS
文字列処理は、Ruby で書いて、
コマンドプロンプト・Power Shell から呼び出す
これが間違いない。
バグる事もない
日本の人工衛星でも、文字列処理の部分を組み込みのmruby で作ったりする。
こういう処理をCで作ると、ややこしくてバグるから
VBS, WSH のピッコロ大魔王は、すごい技術者だよ。
スクレイピングでも、Rubyのクラス・モジュールみたいに、VBScript で作ったりする
VBS から、.NET とか呼び出せるのか
959: 2022/09/02(金)06:32 ID:s4Jk55Dy(1) AAS
たかがその程度でそんなことする必要ない
960(2): 2022/09/02(金)07:22 ID:m72Ydqk7(1/2) AAS
RubyってWindowsデフォで処理できんの?Pythonは?
961: 2022/09/02(金)09:55 ID:ly4TfMW8(1) AAS
>>960
動くよ
有料オプションなんていらない
962: 2022/09/02(金)12:18 ID:m72Ydqk7(2/2) AAS
それいいな
Ruby置いておいて.batから呼び出すの超楽じゃん
963: 2022/09/03(土)13:13 ID:JK72C2wT(1) AAS
mp3をダウンロードして128kにするバッチファイル教えてもらえませんか?
yt-dlpとffpmeg使って色々と試してみてもうまくいきません
ダウンロードしたあとでしたら名前が分かるのでこれで出来たのですけど
ffmpeg -i input.mp3 -vcodec copy -ab 128k output.mp3
964: 2022/09/03(土)13:56 ID:91ZlUxrs(1) AAS
外部リンク:gigazine.net
965: 958 2022/09/03(土)15:43 ID:X5iiwVOT(1) AAS
>>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の方が、本なども多いし
966: 2022/09/06(火)21:18 ID:RxqiahQJ(1) AAS
pythonでも、いけるのか。うむ。
967: 2022/09/10(土)02:55 ID:jyBCEVh6(1) AAS
あっというまにうんこうめ
968: 2022/09/11(日)18:11 ID:sXKbUVWc(1) AAS
パイプから文字列受け取ってsetする方法って
echo a|for /f %%a in ('more') do set a=%%a
みたいにforでやるか一旦ファイルに書き出すしか無い?
echo a| set /p a="" <pipe
みたいにリダイレクトに繋げてくれるかパイプで流れてくるものに%$_%とか一時変数っぽいものに割り当ててくれたら良いのに
rg.exeが便利すぎて遊んでてふと思った
969: 2022/09/12(月)23:31 ID:JnviOvBd(1) AAS
rgがcmdで使い物にならなくてショック
パイプで受け取る分には-E sjisで出来るんだけどrgからパイプで次に繋げたりリダイレクトで出力するとascii以外の文字は化ける
これcmd上だとどうにもならない?
外部リンク[md]:github.com
970(1): 2022/09/13(火)10:43 ID:C/JjoHd5(1) AAS
文字コードの問題なら
一旦nkf32でも中継させて文字コード変換して読み直すとか?
971(1): 2022/09/13(火)13:50 ID:8ckY0WFW(1) AAS
chcp 65001
して全部 utf8 でやっちゃう
utf8 のバッチファイルで行末が2バイト文字だとエラーに
なるんで、そういうのは行末に . とかで回避
972: 2022/09/13(火)19:02 ID:BFM47HY2(1) AAS
>>970
試してみたら行けました
でも入力を指定出来ないのがちょっと不安、と思っていたら期待される入力のオプションありました
現状それしか無いかもですね
rgを多段に使う場合は最初と最期だけ変換すればrgの-Eオプションも省けて良いかも
でも手軽さにケチ付いたみたいなのが引っかかります。。
>>971
utf-8だと機能しないコマンドもあるのでその確認がちょっと大変です
お二方ともレスありがとうございました
973: 2022/09/13(火)20:01 ID:gJ1f0QwF(1) AAS
ちょっと大変どころじゃないけど
UTF-8とかの時点でPowershell検討しなよ
974(1): 2022/09/14(水)02:23 ID:ifExYD0i(1/3) AAS
分かっていると思うけど
nkf等で変換しても変換不可の文字が欠落するので注意
975: 2022/09/14(水)02:38 ID:d7brrjLd(1) AAS
えっ?いや全然分かってないです
sjis → utf-8 → sjis
で欠落する文字って在るのでしょうか?
半角カナはxオプションで維持可能でした
976: 2022/09/14(水)02:51 ID:ifExYD0i(2/3) AAS
元がsjisならいいと思いますたぶん
977: 2022/09/14(水)09:41 ID:t44Y6QQe(1) AAS
>>974
そう、完璧版nkfがあるといい
978: 2022/09/14(水)09:45 ID:bQ7RTOjb(1) AAS
コンソールアプリでパイプの時点で色々諦めなきゃね
rg.exeとやらはwinforms版はないの?オプソだよね?
979: 2022/09/14(水)18:03 ID:XL8H98jz(1/7) AAS
完璧版nkfとは、どのようなものになるのでしょうか?
UTF-8、UTF-16対応?
文字コードによって存在する文字(というかコード?)にどう対応すればよいのでしょうね?
980(1): 2022/09/14(水)18:24 ID:RZxozk25(1) AAS
フォルダ a:\xxx を
a:\yyy の下に移動して
a:\yyy\xxx とするのはどうやりますか?
981: 2022/09/14(水)19:24 ID:ifExYD0i(3/3) AAS
move
982: 2022/09/14(水)19:57 ID:XL8H98jz(2/7) AAS
move a:\xxx\*.* a:\xxx\yyy
983: 2022/09/14(水)19:59 ID:XL8H98jz(3/7) AAS
間違えた。
x move a:\xxx\*.* a:\xxx\yyy
o move a:\xxx\*.* a:\yyy\xxx
984: 2022/09/14(水)20:02 ID:XL8H98jz(4/7) AAS
次スレを立てて見ようと思います。
失敗したら、あとのかたお願いします。
985: 2022/09/14(水)20:05 ID:XL8H98jz(5/7) AAS
次スレです。
【.cmd】 バッチファイルスクリプト %15 【.bat】
2chスレ:tech
後の埋めは、よろしくお願いします。
986: 2022/09/14(水)20:10 ID:y9++92To(1) AAS
move a:\xxx a:\yyy
で行けないかな
ダメならxcopyかrobocopyを使う
987: 2022/09/14(水)22:44 ID:XL8H98jz(6/7) AAS
rem フォルダyyyが無い場合、フォルダyyyを作成。
md a:\xxx\yyy
rem フォルダxxx下にファイルが有る場合。
move a\xxx\*.* a:\xxx\yyy
988: 2022/09/14(水)22:45 ID:XL8H98jz(7/7) AAS
コピーの場合、
move a\xxx\*.* a:\xxx\yyy
のmoveをcopyにして下さい。
989: 2022/09/15(木)07:10 ID:PHto6B20(1) AAS
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に残るので名前変更して再実行
990: 2022/09/15(木)12:53 ID:EPORcPim(1/11) AAS
それで、>>980さんは、解決したのでしょうか。
後は、埋めてしまいますよ。
991: 2022/09/15(木)12:54 ID:EPORcPim(2/11) AAS
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
2chスレ:tech
992: 2022/09/15(木)12:55 ID:EPORcPim(3/11) AAS
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
2chスレ:tech
993: 2022/09/15(木)12:55 ID:EPORcPim(4/11) AAS
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
2chスレ:tech
994: 2022/09/15(木)12:56 ID:EPORcPim(5/11) AAS
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
2chスレ:tech
995: 2022/09/15(木)12:56 ID:EPORcPim(6/11) AAS
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
2chスレ:tech
996: 2022/09/15(木)12:57 ID:EPORcPim(7/11) AAS
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
2chスレ:tech
997: 2022/09/15(木)12:57 ID:EPORcPim(8/11) AAS
次スレ
【.cmd】 バッチファイルスクリプト %15 【.bat】
2chスレ:tech
998: 2022/09/15(木)13:08 ID:EPORcPim(9/11) AAS
埋め
999: 2022/09/15(木)13:08 ID:EPORcPim(10/11) AAS
埋め
1000: 2022/09/15(木)13:09 ID:EPORcPim(11/11) AAS
また、いつの日にか、相まみえん。
1001(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 761日 6時間 9分 1秒
1002(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
外部リンク:premium.5ch.net
▼ 浪人ログインはこちら ▼
外部リンク[php]:login.5ch.net
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.128s*