拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです
※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう
過去スレ
%13 http://mevius.2ch.net/test/read.cgi/tech/1542779527/
%12 http://mevius.2ch.net/test/read.cgi/tech/1489207631/
%11 http://echo.2ch.net/test/read.cgi/tech/1424858999/
%10 http://peace.2ch.net/test/read.cgi/tech/1374205515/
%9 http://toro.2ch.net/test/read.cgi/tech/1335015478/
%8 http://toro.2ch.net/test/read.cgi/tech/1315844420/
%7 http://hibari.2ch.net/test/read.cgi/tech/1298873550/
%6 http://hibari.2ch.net/test/read.cgi/tech/1277465356/
%5 http://pc12.2ch.net/test/read.cgi/tech/1242268171/
%4 http://pc12.2ch.net/test/read.cgi/tech/1229955189/
%3 http://pc11.2ch.net/test/read.cgi/tech/1217860043/
%2 http://pc11.2ch.net/test/read.cgi/tech/1197881068/
【.cmd】 バッチファイルスクリプト %1 【.bat】
http://pc11.2ch.net/test/read.cgi/tech/1178281991/
バッチファイルプログラミング 3.bat
http://pc11.2ch.net/test/read.cgi/tech/1148485555/
バッチファイルプログラミング 2.bat
http://pc8.2ch.net/test/read.cgi/tech/1104911889/
バッチファイルプログラミング質問スレ
http://pc5.2ch.net/test/read.cgi/tech/1040614686/
探検
【.cmd】 バッチファイルスクリプト %14 【.bat】
レス数が950を超えています。1000を超えると書き込みができなくなります。
2020/08/15(土) 07:00:26.64ID:f3kW5kCx
885デフォルトの名無しさん
2022/07/22(金) 07:47:11.80ID:bfkyQVXg set /a なら値は高々32ビットだよね
bc は不要かも
cmd /c exit /b %a%
echo %=ExitCode%
bc は不要かも
cmd /c exit /b %a%
echo %=ExitCode%
886デフォルトの名無しさん
2022/07/22(金) 10:43:07.05ID:LvB8fWz+ ダントツ遅いが
powershell -c "'{0:x}' -f 255"
powershell -c "'{0:x}' -f 255"
887デフォルトの名無しさん
2022/07/22(金) 10:45:53.90ID:CXcliooi obaseとかbcとか知らないことがいっぱい出ているな
888デフォルトの名無しさん
2022/07/22(金) 11:33:23.34ID:RIaxNIcl 888
889デフォルトの名無しさん
2022/07/22(金) 13:09:13.02ID:ZzUgbaoD わざわざバッチでやるってことを理解してないアホがいる
pythonでも入れてろゴミ
pythonでも入れてろゴミ
890デフォルトの名無しさん
2022/07/22(金) 13:12:16.30ID:P7NcnZ58 batだけで計算しても理解はされないだろうよ
891デフォルトの名無しさん
2022/07/22(金) 15:55:27.20ID:bfkyQVXg892デフォルトの名無しさん
2022/07/22(金) 18:11:09.86ID:5WL5LWhS 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入れてる
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:14.02ID:bfkyQVXg 話変わるけど右シフトのすぐ右の数字は危険だよね
アンカーに解釈されるので2chで数値が変わる場合があるんだよ
アンカーに解釈されるので2chで数値が変わる場合があるんだよ
894デフォルトの名無しさん
2022/07/22(金) 22:42:20.46ID:AXmcGRlR >>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で小数点以下桁数指定出来るのは良いのですが最下桁が四捨五入でも切り捨て切り上げでも無く変な値になったりとかが
惜しい感じですね
エスケープはファイルにして読ませれば良いし最下桁は自力で切り捨てれば良いだけですのでいずれ何かで役立つかも
ありがとうございました
ありがとうございました
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で小数点以下桁数指定出来るのは良いのですが最下桁が四捨五入でも切り捨て切り上げでも無く変な値になったりとかが
惜しい感じですね
エスケープはファイルにして読ませれば良いし最下桁は自力で切り捨てれば良いだけですのでいずれ何かで役立つかも
ありがとうございました
895デフォルトの名無しさん
2022/07/23(土) 09:18:41.04ID:WQSCizyX エスケープは入力要求メッセージ(末尾改行無し)を使って回避する方法がある。
<nul set /p "=8^2" | 〜
※もし行(末尾に改行)が必要なら
<nul set /p "=8^2" | more | 〜
<nul set /p "=8^2" | 〜
※もし行(末尾に改行)が必要なら
<nul set /p "=8^2" | more | 〜
896デフォルトの名無しさん
2022/07/23(土) 10:55:51.20ID:obFo1BRC >>894
set "a=8^^2" & echo %%a%% | bc
set "a=8^^2" & echo %%a%% | bc
897デフォルトの名無しさん
2022/07/24(日) 07:30:05.93ID:oa53tMxs >>895
目からウロコなTips
set /p <nul="8^2" | more | bc
で行けました
moreの代わりにfindやfindstrなどパイプで受け取って改行付加して吐けるコマンドなら使えるっぽい。他には以下とか
(set /p <nul="8^2"&echo=) | bc
set /p の改行無しecho の用法は知っていたんだけどこの局面で使える事に思い付けなかったのが悔しい
目からウロコなTips
set /p <nul="8^2" | more | bc
で行けました
moreの代わりにfindやfindstrなどパイプで受け取って改行付加して吐けるコマンドなら使えるっぽい。他には以下とか
(set /p <nul="8^2"&echo=) | bc
set /p の改行無しecho の用法は知っていたんだけどこの局面で使える事に思い付けなかったのが悔しい
898デフォルトの名無しさん
2022/08/13(土) 20:26:36.34ID:hShn1n51 コマンドからリモートホスト名とそのIPを取得出来ますか?
899デフォルトの名無しさん
2022/08/14(日) 12:49:48.16ID:WvMv+Qf8 nslookup … DNSで調べる
ping … hostsとか諸々込みで実際にどう名前解決されるか
nbtstat … NETBIOS名なら
netstat … 通信で実際に使ってる自端末と相手のIPアドレス
ipconfig … 自端末の諸々
netsh … 自端末の諸々
ping … hostsとか諸々込みで実際にどう名前解決されるか
nbtstat … NETBIOS名なら
netstat … 通信で実際に使ってる自端末と相手のIPアドレス
ipconfig … 自端末の諸々
netsh … 自端末の諸々
900898
2022/08/14(日) 18:43:42.99ID:0tA/3KXA 各コマンドのヘルプ見たり試してみたけど良く分からなかった
WAN側IPとそのホスト名をコマンドから知れないか?を知りたかったんだけど無理そうですか?
nslookupで引数にIP指定すればホスト名は取れるんだけどIPをどうやって知ったら良いものか
WAN側IPとそのホスト名をコマンドから知れないか?を知りたかったんだけど無理そうですか?
nslookupで引数にIP指定すればホスト名は取れるんだけどIPをどうやって知ったら良いものか
901デフォルトの名無しさん
2022/08/14(日) 19:35:36.51ID:R62l2k+7902デフォルトの名無しさん
2022/08/14(日) 19:37:41.23ID:WvMv+Qf8 インターネット上の相手側から見える、自WANのWAN側IPアドレスって事?
例えば自端末がオンラインゲームのホストになる際に相手に教えるIPアドレス。
WAN側機器のWeb管理コンソールとか、
「診断くん」等のWebサービスをスクレイピングすればいいよ。
探せばAPIサービスなんかもあるかもね。
※Webサービス使うときは利用規約をよく読んでね。
既にIPアドレス知る方法を1つは知ってるようだから、その方法でもいいよ。
例えば自端末がオンラインゲームのホストになる際に相手に教えるIPアドレス。
WAN側機器のWeb管理コンソールとか、
「診断くん」等のWebサービスをスクレイピングすればいいよ。
探せばAPIサービスなんかもあるかもね。
※Webサービス使うときは利用規約をよく読んでね。
既にIPアドレス知る方法を1つは知ってるようだから、その方法でもいいよ。
903デフォルトの名無しさん
2022/08/14(日) 19:49:12.00ID:3lHTKQ6A ホスト名とは何かという定義が必要だな
WEBサーバーなら複数のホスト名(URLのドメインパート)で同じ(時には複数の)サーバーに接続する
https://5ch.net/でアクセスされるサーバーなら 5ch.net がホスト名だが
同じサーバーが他のドメインもホストしているなら、他のホスト名も持っていることになる
あるサーバーが、接続され得るすべてのホスト名を知りたいと思っても、それは世界中のDNSの勝手なの、
漏れなく調べるためには、世界中のすべてのドメインのレコードを調べる必要があるので、実際には無理。
DNSの逆引きは、それを設定している人が必要な分を登録しているだけなので、すべてとは言い切れない。
WEBサーバーなら複数のホスト名(URLのドメインパート)で同じ(時には複数の)サーバーに接続する
https://5ch.net/でアクセスされるサーバーなら 5ch.net がホスト名だが
同じサーバーが他のドメインもホストしているなら、他のホスト名も持っていることになる
あるサーバーが、接続され得るすべてのホスト名を知りたいと思っても、それは世界中のDNSの勝手なの、
漏れなく調べるためには、世界中のすべてのドメインのレコードを調べる必要があるので、実際には無理。
DNSの逆引きは、それを設定している人が必要な分を登録しているだけなので、すべてとは言い切れない。
904デフォルトの名無しさん
2022/08/14(日) 20:04:12.33ID:zcJ+8Zbe905デフォルトの名無しさん
2022/08/14(日) 20:07:44.49ID:0tA/3KXA そうです。自分のインターネット側のIP
ルーター管理画面のWAN側IPです
これをコマンド(LAN側のマシン)から調べる方法が無いのかなって
> Webサービスをスクレイピング
これってコマンドでやる方法あります?
NECのなんですけどルーター管理画面から取れるのかな?
ちょっとググったりしてみましたけど簡単なバッチくらいしか使えない自分にはハードル高いかも
ルーター管理画面のWAN側IPです
これをコマンド(LAN側のマシン)から調べる方法が無いのかなって
> Webサービスをスクレイピング
これってコマンドでやる方法あります?
NECのなんですけどルーター管理画面から取れるのかな?
ちょっとググったりしてみましたけど簡単なバッチくらいしか使えない自分にはハードル高いかも
906デフォルトの名無しさん
2022/08/14(日) 22:44:27.94ID:zcJ+8Zbe >>905
curl.exeを持ってこないといけないけど
診断君のスクレイピングだと
@echo off
curl.exe http://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%
curl.exeを持ってこないといけないけど
診断君のスクレイピングだと
@echo off
curl.exe http://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%
907デフォルトの名無しさん
2022/08/14(日) 22:55:35.81ID:zcJ+8Zbe >>905
何も要らないが、powershellを使わないといけない
(なおwebアクセスで診断君以外ではtls1.2を有効にしないとダメなことが多い)
$res = wget http://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
何も要らないが、powershellを使わないといけない
(なおwebアクセスで診断君以外ではtls1.2を有効にしないとダメなことが多い)
$res = wget http://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
908デフォルトの名無しさん
2022/08/15(月) 00:00:17.27ID:xwOg3pSS909デフォルトの名無しさん
2022/08/15(月) 02:02:49.45ID:xwOg3pSS お陰様でコマンドから確認出来るようになりました。この度は本当にありがとうございました
for /f "skip=301 tokens=4 delims=< " %a in ('curl http://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しないと無理ですよね?
for /f "skip=301 tokens=4 delims=< " %a in ('curl http://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:40.32ID:3ogXO4Oz call :ラベル名 で処理を呼び出して exit /b を break として使うこともできるよ
911デフォルトの名無しさん
2022/08/15(月) 21:05:50.46ID:Z47lvB2J >>909
breakしたい、というか302行目だけ欲しいってことかな。
findstrで行番号振って、さらにfindstrで目的の行だけ取るって方法があるよ。
for /f "tokens=4 delims=< " %a in ('curl 〜 -s^| findstr /rn /c:"^"^| findstr /r /c:"^302:"') do
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:14.62ID:RClv+rPW >>911
for /f "tokens=5 delims=< " %a in ('curl http://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入れたり明後日のことしてハマってました
目的が何行目か決まっている時は最良の方法かもですね
行番号列挙する必要がありますが複数行でも使えますし
for /f "tokens=5 delims=< " %a in ('curl http://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デフォルトの名無しさん
2022/08/27(土) 21:14:13.99ID:S8eeCUJc 文字列の入った変数から、その文字数を高速に取得したいんですが
なにか良い方法はありますか? 上限は8189です
なにか良い方法はありますか? 上限は8189です
914デフォルトの名無しさん
2022/08/27(土) 22:59:03.27ID:OpG+r6e/ 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してループさせればいい
: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:32.10ID:S8eeCUJc916デフォルトの名無しさん
2022/08/27(土) 23:22:13.27ID:VY6ZsFbR917デフォルトの名無しさん
2022/08/27(土) 23:24:42.08ID:OpG+r6e/ setだかcmdの構文解析だかの引数の文字数上限が8191 (0x1fff) とかで "s=" で2文字必要だから8189とかだったかな
変数名が単一文字で無かったり "" で囲ったりしても使用可能文字数減るはずだし
forやifの中で展開出来なかったりしたと思うから
限界探るなら一見使えているように見えてもちゃんと確認しといた方が良いよ
変数名が単一文字で無かったり "" で囲ったりしても使用可能文字数減るはずだし
forやifの中で展開出来なかったりしたと思うから
限界探るなら一見使えているように見えてもちゃんと確認しといた方が良いよ
918デフォルトの名無しさん
2022/08/27(土) 23:49:06.77ID:OpG+r6e/ 4096 -> 2048 -> 1024 -> 512 -> 256 -> 128 -> 64 -> 32
if で8回くらい判定させればそれなりに速く出来ると思う
256分割。。
オフセットも変数にしてループするとか
512で真だったら /2 偽だったら *1.5 (set /a N=N/2+N) てな感じで
if で8回くらい判定させればそれなりに速く出来ると思う
256分割。。
オフセットも変数にしてループするとか
512で真だったら /2 偽だったら *1.5 (set /a N=N/2+N) てな感じで
919デフォルトの名無しさん
2022/08/28(日) 00:01:54.99ID:hYNZdTyV >>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!
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:39.63ID:8DkHE3ui なるほどなー
set n=!a! や set /a "a=n-(1<<%%i)"
これがパッと出て来るなんて頭良いですね
set n=!a! や set /a "a=n-(1<<%%i)"
これがパッと出て来るなんて頭良いですね
921デフォルトの名無しさん
2022/08/28(日) 10:26:23.19ID:+w1wfoOM たとえばファイルサイズを
%~z1 でなくfilename.sizeみたいなわかりやすい書き方に
する方法はないですか
%~z1 でなくfilename.sizeみたいなわかりやすい書き方に
する方法はないですか
922デフォルトの名無しさん
2022/08/28(日) 10:36:37.74ID:FcIb+N5t バッチファイルにわかりやすい書き方なんてものがあったら、俺の髪はもっと残ってた
923デフォルトの名無しさん
2022/08/28(日) 11:08:55.91ID:CaouF0NP バッチの基本的な考え方としては基本コマンドにこだわらず外部コマンドを呼ぶことだと思う
セキュリティ的に外部コマンドは入れられないといった制約があるならこのレガシーツールを使い続けるのは無理がある
現実解のひとつはPowershellのワンライナーを呼ぶことで
そうやって少しずつ学んでるうちに段階的にbatを卒業することだと思う
セキュリティ的に外部コマンドは入れられないといった制約があるならこのレガシーツールを使い続けるのは無理がある
現実解のひとつはPowershellのワンライナーを呼ぶことで
そうやって少しずつ学んでるうちに段階的にbatを卒業することだと思う
924デフォルトの名無しさん
2022/08/28(日) 11:23:21.78ID:+w1wfoOM >>923
ありがとうございます
やはり無理なのか、aliasesなどを使った名案があればいいのに
Powershellはコマンド名が長すぎて使う気になれない
外部コマンドやツ-ルを使えば簡単でもセキュリティ的に問題があるかわからないので使いたくない場合がある
ありがとうございます
やはり無理なのか、aliasesなどを使った名案があればいいのに
Powershellはコマンド名が長すぎて使う気になれない
外部コマンドやツ-ルを使えば簡単でもセキュリティ的に問題があるかわからないので使いたくない場合がある
925デフォルトの名無しさん
2022/08/28(日) 11:41:21.61ID:3aiLuiYL エイリアスもどきはあるよ
マクロファイルに定義を書いておいて一斉に登録することもできる
doskey /?
あとpowershellにはエイリアスがある
マクロファイルに定義を書いておいて一斉に登録することもできる
doskey /?
あとpowershellにはエイリアスがある
926デフォルトの名無しさん
2022/08/28(日) 15:23:54.30ID:CaouF0NP Powershellは単に慣れと食わず嫌いの問題やね
cmdも無数の気持ち悪いルールがあるし現にたかが文字を数えるだけで呪文めいたコードが必要になってる
何にせよ人間慣れれば気にならなくなるもの
さすがにあと5年で定年だからプログラミングしなくなりますなんて老人には勧めんけどね
コマンドの長さとエイリアスについては
俺はGet-ChildItemはダルいからdirやlsと書くし
ForEach-Objectの代わりに%と書き続けてる
cmdも無数の気持ち悪いルールがあるし現にたかが文字を数えるだけで呪文めいたコードが必要になってる
何にせよ人間慣れれば気にならなくなるもの
さすがにあと5年で定年だからプログラミングしなくなりますなんて老人には勧めんけどね
コマンドの長さとエイリアスについては
俺はGet-ChildItemはダルいからdirやlsと書くし
ForEach-Objectの代わりに%と書き続けてる
927デフォルトの名無しさん
2022/08/28(日) 15:36:49.18ID:3aiLuiYL powershellの弱点は初期起動に時間が掛かるという点だね
通常的にpowershellを使ってるならいいけど、
それこそ特定の処理だけたまに使うという人にはそこがネックになる
そういう場合はもうオブソリュートだがWSHがいい仕事をする
通常的にpowershellを使ってるならいいけど、
それこそ特定の処理だけたまに使うという人にはそこがネックになる
そういう場合はもうオブソリュートだがWSHがいい仕事をする
928デフォルトの名無しさん
2022/08/28(日) 17:28:34.01ID:hYNZdTyV >>921 わかりやすい変数に代入すれば?
929デフォルトの名無しさん
2022/08/28(日) 19:39:30.66ID:TtkhtxSa 底辺ドカタがアイデンティティ護ろうと必死だけど必死に見られたくない虚栄心とのせめぎ合いが垣間見えてワラw
930デフォルトの名無しさん
2022/08/28(日) 19:49:06.93ID:hYNZdTyV エイリアス無いし
batを使いたいなら騙しながらやるしかないだろ
batを使いたいなら騙しながらやるしかないだろ
931デフォルトの名無しさん
2022/08/29(月) 03:05:26.48ID:Rm8LZ6WJ >>924
ほんとはvbsが起動も速度も速い上にバッチやps程変な癖もなくていわゆるVB脳程度の知識でそこそこのものが手軽に書けるんだよ
ただこの板にあるスレが一言で言えば気持ち悪いから誰も触れないのよ
よくvbsはオワコンて言われるけど少なくとも2029年までは標準で使えるから安心していいよ
ほんとはvbsが起動も速度も速い上にバッチやps程変な癖もなくていわゆるVB脳程度の知識でそこそこのものが手軽に書けるんだよ
ただこの板にあるスレが一言で言えば気持ち悪いから誰も触れないのよ
よくvbsはオワコンて言われるけど少なくとも2029年までは標準で使えるから安心していいよ
932デフォルトの名無しさん
2022/08/29(月) 04:54:03.93ID:DAjO1ugz @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させてみたけど
バッチでの文字数カウントとしては最強じゃね?
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:34.83ID:ZvttE7Ov 変数に代入出来るのが8000でも
set/pで入力出来るのは1000ほどしかないな
文字数が多いと色々と落とし穴ありそう
set/pで入力出来るのは1000ほどしかないな
文字数が多いと色々と落とし穴ありそう
934デフォルトの名無しさん
2022/08/30(火) 16:27:10.19ID:2X2Lv8NW >>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 文字:在る
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:26.64ID:Qtk7w0l/ もう質問者はいないぞ
936デフォルトの名無しさん
2022/08/30(火) 23:17:38.91ID:+Bm8wCSm 素人なんだけど >>919 みたいなのってプログラマだったら知っていて当然の定番のロジック?アルゴリズム?だったりするん?
937デフォルトの名無しさん
2022/08/31(水) 00:08:53.66ID:F2h2Wpm0938デフォルトの名無しさん
2022/08/31(水) 05:05:19.96ID:I3t0py3T939デフォルトの名無しさん
2022/08/31(水) 06:19:56.53ID:IktOvXlL 個人的にはforの入れ子がおもしろい。そんな方法があるのかと思った。
普通そこはcallを考えるけど、そうすると速度が落ちるのかな
普通そこはcallを考えるけど、そうすると速度が落ちるのかな
940デフォルトの名無しさん
2022/08/31(水) 20:20:14.08ID:TgQJCwr4 言語にっよっては文字数を数える関数とかがあるけど、こういう手法を駆使してるん?
941デフォルトの名無しさん
2022/08/31(水) 21:42:17.85ID:/4IK1Kkc %%iをカウントダウンさせて変数一つ省略させてるのが美しいわ
942デフォルトの名無しさん
2022/08/31(水) 23:00:05.56ID:dYVvh+jC943デフォルトの名無しさん
2022/08/31(水) 23:03:12.74ID:FwIzrDsl 可変長の文字コードが一般的だから、先頭から数えないと文字数はわからない
944デフォルトの名無しさん
2022/08/31(水) 23:25:40.84ID:8OAd82SA 942の言う通り言語や型によっては文字数を予め持たせてるよ
最初に一度だけカウントしてメモっておけば何度も数え直す必要がない
最初に一度だけカウントしてメモっておけば何度も数え直す必要がない
945デフォルトの名無しさん
2022/08/31(水) 23:41:16.72ID:IktOvXlL C言語のstrlenだと単純に先頭から0を探すだけ
末尾以降のメモリは0とは限らない。ゴミだらけ
末尾以降のメモリは0とは限らない。ゴミだらけ
946デフォルトの名無しさん
2022/09/01(木) 05:31:13.24ID:dRjt3+vQ947デフォルトの名無しさん
2022/09/01(木) 10:54:06.41ID:KDf3jCCr たぶんだけど
内部表現がUTF-8みたいな可変長(Perl等)ならバイト数じゃなくて文字数で持ってると思う。
内部表現がUTF-16みたいな固定長(.NET等)でバイト数÷2が文字数になる言語だと、
「取得毎に÷2(右シフト)の負荷」をとるか
「常に文字数保持のメモリ消費」をとるかは言語による気がする。※まあ後者かな。
内部表現がUTF-8みたいな可変長(Perl等)ならバイト数じゃなくて文字数で持ってると思う。
内部表現がUTF-16みたいな固定長(.NET等)でバイト数÷2が文字数になる言語だと、
「取得毎に÷2(右シフト)の負荷」をとるか
「常に文字数保持のメモリ消費」をとるかは言語による気がする。※まあ後者かな。
948デフォルトの名無しさん
2022/09/01(木) 11:14:11.70ID:BOpcWEhd if definedはあるが、if not definedはエラーになることを発見した
949デフォルトの名無しさん
2022/09/01(木) 11:34:31.15ID:KDf3jCCr ならんが
950デフォルトの名無しさん
2022/09/01(木) 12:10:09.24ID:BOpcWEhd951デフォルトの名無しさん
2022/09/01(木) 14:31:17.40ID:EyFcbtIt 初心者です
[曲名].mp3 の様に
曲名をカッコで囲んでファイル名を出力する方法はどうしたらよいのでしょうか?
-o "%%(title)s.%%(ext)s"
ここの()を[]に変えてもダメでした
お時間ある方いらっしゃいましたらよろしくお願い致します。
[曲名].mp3 の様に
曲名をカッコで囲んでファイル名を出力する方法はどうしたらよいのでしょうか?
-o "%%(title)s.%%(ext)s"
ここの()を[]に変えてもダメでした
お時間ある方いらっしゃいましたらよろしくお願い致します。
952デフォルトの名無しさん
2022/09/01(木) 14:33:44.02ID:5NMGBymZ 多分こっちのスレで聞いた方がいい
【DL】動画の保存方法総合スレ【アダルト禁止】part51
https://egg.5ch.net/test/read.cgi/streaming/1654911933/
【DL】動画の保存方法総合スレ【アダルト禁止】part51
https://egg.5ch.net/test/read.cgi/streaming/1654911933/
953デフォルトの名無しさん
2022/09/01(木) 14:37:30.33ID:EyFcbtIt 952さん
教えてくれてありがとうございます
失礼いたしました
教えてくれてありがとうございます
失礼いたしました
954デフォルトの名無しさん
2022/09/01(木) 14:41:09.20ID:EyFcbtIt 教えて頂いた所は書き込みできませんでした><;
955デフォルトの名無しさん
2022/09/01(木) 14:42:55.59ID:5NMGBymZ 今出先だから試せないけど多分こうかな
-o "[%%(title)s].%%(ext)s"
-o "[%%(title)s].%%(ext)s"
956デフォルトの名無しさん
2022/09/01(木) 14:52:40.78ID:EyFcbtIt 599さん出来ました♪
親切に教えてくれてありがとうございました
感謝です(*- -)(*_ _)ペコリ
親切に教えてくれてありがとうございました
感謝です(*- -)(*_ _)ペコリ
957デフォルトの名無しさん
2022/09/01(木) 14:53:42.59ID:EyFcbtIt 955さんでした...ごめんなさい
958デフォルトの名無しさん
2022/09/01(木) 21:32:28.04ID:P4dKpTai 文字列処理は、Ruby で書いて、
コマンドプロンプト・Power Shell から呼び出す
これが間違いない。
バグる事もない
日本の人工衛星でも、文字列処理の部分を組み込みのmruby で作ったりする。
こういう処理をCで作ると、ややこしくてバグるから
VBS, WSH のピッコロ大魔王は、すごい技術者だよ。
スクレイピングでも、Rubyのクラス・モジュールみたいに、VBScript で作ったりする
VBS から、.NET とか呼び出せるのか
コマンドプロンプト・Power Shell から呼び出す
これが間違いない。
バグる事もない
日本の人工衛星でも、文字列処理の部分を組み込みのmruby で作ったりする。
こういう処理をCで作ると、ややこしくてバグるから
VBS, WSH のピッコロ大魔王は、すごい技術者だよ。
スクレイピングでも、Rubyのクラス・モジュールみたいに、VBScript で作ったりする
VBS から、.NET とか呼び出せるのか
959デフォルトの名無しさん
2022/09/02(金) 06:32:40.82ID:s4Jk55Dy たかがその程度でそんなことする必要ない
960デフォルトの名無しさん
2022/09/02(金) 07:22:53.60ID:m72Ydqk7 RubyってWindowsデフォで処理できんの?Pythonは?
961デフォルトの名無しさん
2022/09/02(金) 09:55:08.52ID:ly4TfMW8962デフォルトの名無しさん
2022/09/02(金) 12:18:58.31ID:m72Ydqk7 それいいな
Ruby置いておいて.batから呼び出すの超楽じゃん
Ruby置いておいて.batから呼び出すの超楽じゃん
963デフォルトの名無しさん
2022/09/03(土) 13:13:17.18ID:JK72C2wT mp3をダウンロードして128kにするバッチファイル教えてもらえませんか?
yt-dlpとffpmeg使って色々と試してみてもうまくいきません
ダウンロードしたあとでしたら名前が分かるのでこれで出来たのですけど
ffmpeg -i input.mp3 -vcodec copy -ab 128k output.mp3
yt-dlpとffpmeg使って色々と試してみてもうまくいきません
ダウンロードしたあとでしたら名前が分かるのでこれで出来たのですけど
ffmpeg -i input.mp3 -vcodec copy -ab 128k output.mp3
964デフォルトの名無しさん
2022/09/03(土) 13:56:15.90ID:91ZlUxrs965958
2022/09/03(土) 15:43:23.43ID:X5iiwVOT >>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の方が、本なども多いし
ただし、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:12.82ID:RxqiahQJ pythonでも、いけるのか。うむ。
967デフォルトの名無しさん
2022/09/10(土) 02:55:46.45ID:jyBCEVh6 あっというまにうんこうめ
968デフォルトの名無しさん
2022/09/11(日) 18:11:08.37ID:sXKbUVWc パイプから文字列受け取ってsetする方法って
echo a|for /f %%a in ('more') do set a=%%a
みたいにforでやるか一旦ファイルに書き出すしか無い?
echo a| set /p a="" <pipe
みたいにリダイレクトに繋げてくれるかパイプで流れてくるものに%$_%とか一時変数っぽいものに割り当ててくれたら良いのに
rg.exeが便利すぎて遊んでてふと思った
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:40.49ID:JnviOvBd rgがcmdで使い物にならなくてショック
パイプで受け取る分には-E sjisで出来るんだけどrgからパイプで次に繋げたりリダイレクトで出力するとascii以外の文字は化ける
これcmd上だとどうにもならない?
https://github.com/BurntSushi/ripgrep/blob/master/FAQ.md#pipe-non-ascii-windows
パイプで受け取る分には-E sjisで出来るんだけどrgからパイプで次に繋げたりリダイレクトで出力するとascii以外の文字は化ける
これcmd上だとどうにもならない?
https://github.com/BurntSushi/ripgrep/blob/master/FAQ.md#pipe-non-ascii-windows
970デフォルトの名無しさん
2022/09/13(火) 10:43:09.25ID:C/JjoHd5 文字コードの問題なら
一旦nkf32でも中継させて文字コード変換して読み直すとか?
一旦nkf32でも中継させて文字コード変換して読み直すとか?
971デフォルトの名無しさん
2022/09/13(火) 13:50:58.24ID:8ckY0WFW chcp 65001
して全部 utf8 でやっちゃう
utf8 のバッチファイルで行末が2バイト文字だとエラーに
なるんで、そういうのは行末に . とかで回避
して全部 utf8 でやっちゃう
utf8 のバッチファイルで行末が2バイト文字だとエラーに
なるんで、そういうのは行末に . とかで回避
972デフォルトの名無しさん
2022/09/13(火) 19:02:32.59ID:BFM47HY2973デフォルトの名無しさん
2022/09/13(火) 20:01:05.07ID:gJ1f0QwF ちょっと大変どころじゃないけど
UTF-8とかの時点でPowershell検討しなよ
UTF-8とかの時点でPowershell検討しなよ
974デフォルトの名無しさん
2022/09/14(水) 02:23:02.40ID:ifExYD0i 分かっていると思うけど
nkf等で変換しても変換不可の文字が欠落するので注意
nkf等で変換しても変換不可の文字が欠落するので注意
975デフォルトの名無しさん
2022/09/14(水) 02:38:59.13ID:d7brrjLd えっ?いや全然分かってないです
sjis → utf-8 → sjis
で欠落する文字って在るのでしょうか?
半角カナはxオプションで維持可能でした
sjis → utf-8 → sjis
で欠落する文字って在るのでしょうか?
半角カナはxオプションで維持可能でした
976デフォルトの名無しさん
2022/09/14(水) 02:51:18.58ID:ifExYD0i 元がsjisならいいと思いますたぶん
977デフォルトの名無しさん
2022/09/14(水) 09:41:51.82ID:t44Y6QQe >>974
そう、完璧版nkfがあるといい
そう、完璧版nkfがあるといい
978デフォルトの名無しさん
2022/09/14(水) 09:45:41.31ID:bQ7RTOjb コンソールアプリでパイプの時点で色々諦めなきゃね
rg.exeとやらはwinforms版はないの?オプソだよね?
rg.exeとやらはwinforms版はないの?オプソだよね?
979デフォルトの名無しさん
2022/09/14(水) 18:03:36.58ID:XL8H98jz 完璧版nkfとは、どのようなものになるのでしょうか?
UTF-8、UTF-16対応?
文字コードによって存在する文字(というかコード?)にどう対応すればよいのでしょうね?
UTF-8、UTF-16対応?
文字コードによって存在する文字(というかコード?)にどう対応すればよいのでしょうね?
980デフォルトの名無しさん
2022/09/14(水) 18:24:17.06ID:RZxozk25 フォルダ a:\xxx を
a:\yyy の下に移動して
a:\yyy\xxx とするのはどうやりますか?
a:\yyy の下に移動して
a:\yyy\xxx とするのはどうやりますか?
981デフォルトの名無しさん
2022/09/14(水) 19:24:16.59ID:ifExYD0i move
982デフォルトの名無しさん
2022/09/14(水) 19:57:29.62ID:XL8H98jz move a:\xxx\*.* a:\xxx\yyy
983デフォルトの名無しさん
2022/09/14(水) 19:59:06.71ID:XL8H98jz 間違えた。
x move a:\xxx\*.* a:\xxx\yyy
o move a:\xxx\*.* a:\yyy\xxx
x move a:\xxx\*.* a:\xxx\yyy
o move a:\xxx\*.* a:\yyy\xxx
984デフォルトの名無しさん
2022/09/14(水) 20:02:13.40ID:XL8H98jz 次スレを立てて見ようと思います。
失敗したら、あとのかたお願いします。
失敗したら、あとのかたお願いします。
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 戦争は無くならないし殺人は起きるし女はレイプされるし子供は餓死するし
- 中共は台湾を自分の領土と思ってるから外国が「侵略するな」と警告しても意味ないんだよね
- 🏡
- スマホってスクリーントーンみにくくね?
- ( ´・ω・` )朝ですぞー
