[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
493: 486 2018/04/23(月)16:55 ID:75V+260b(1) AAS
>>484が
> でも難しくて意味が分からないけど
こんな事言ってるから何してるのか書いただけよ
それ以外の意味は無い
494(1): 2018/04/26(木)21:33 ID:iUADfoHj(1/2) AAS
バッチファイルを直接ダブルクリックした時は処理の最後にpauseをかける(=コマンドプロンプトウインドウを
閉じずにホールドする)条件にして、コマンドプロンプトから呼び出された場合はpauseはかけずに処理を
終了するという実装をしたいんですが、いい方法ありますか?
495: 2018/04/26(木)21:43 ID:g7ZPMx3V(1) AAS
>>494
引数で処理を分けるか、pause有無でバッチファイルそのものを分ける。
496(1): 2018/04/26(木)21:50 ID:5PgkCptO(1) AAS
適当でいいなら%CMDCMDLINE%
497: 2018/04/26(木)21:57 ID:vlAm5Lzz(1) AAS
%0 参照して分岐すれば?
echo %0
pause
498: 2018/04/26(木)22:30 ID:iUADfoHj(2/2) AAS
レスありがとうございます>各位
すいませんダブルクリックと書いたのでミスリードになってしまったのですが、実際にはD&Dで引数も使用します。
なので>>496の環境変数参照して/Cオプション実行しているかどうかで分岐しようと思います。
499: 2018/04/27(金)01:23 ID:XIoO9rX1(1) AAS
ログファイルで確認するようにすればいいのに。
500: 2018/04/27(金)19:57 ID:CQ9eqs6l(1) AAS
え?
501(6): 2018/05/01(火)06:45 ID:aXoGd7xG(1) AAS
64桁の10進数を16進数に変換する方法、探したけど見つからなくて
バッチファイルだけでやるのは無理があるでしょうか。
javascriptでなら巨大な桁数いけるサイトはあったのですが
バッチファイル内で大量に処理したいのです。
502: 2018/05/01(火)08:40 ID:04a9c6T+(1/2) AAS
ネットワークカードに複数IPアドレスをバッチファイルで当てる方法教えてください。
netsh interface ipv4 set add name="ローカル エリア接続" static addr1="192.168.15.35" このあと
192.168.1.35も割り当てたい、よろしくお願いいたします。
503: 2018/05/01(火)08:45 ID:04a9c6T+(2/2) AAS
自己解決 netsh interface ip add address name="ローカル エリア接続" addr=192.168.1.35 mask=255.255.255.0
504(1): 2018/05/01(火)17:14 ID:cVB2iu29(1) AAS
>>501
取り敢えず、これでやったらどう?
外部リンク:technet.microsoft.com
505(2): 2018/05/01(火)23:59 ID:7h2ZqymN(1) AAS
>>501
普通の手段だと無理だと思う。
1. 整数演算はOSのbit数の上限までしかできない
2. 文字列として変換するにしても255⇒0xFFが限界
…。
3. そもそも符号無し16進??有りの16進??
506(1): 2018/05/02(水)00:09 ID:bQsnMWtx(1) AAS
>>501
ほぼ無理
自転車で崖を上がりたいというようなもの
あきらめて、これを機に何かの言語を覚えるといろいろな場面で一生使える
一番簡単なのはinstall不要なgawk
507(1): 505 2018/05/02(水)00:34 ID:69djG7nz(1) AAS
訂正。64bit環境でも調べたけど、最大2147483647(符号付32bitのMAX)だった。
508(1): 2018/05/02(水)02:01 ID:z5LQTSUi(1) AAS
>>504-507
ありがとうございます。hex2decは試行済でした。
1234567890000987654321000000
を渡すと
7766001854005038656 = 0x6BC6618A48FECE40
このように崩れます。
やはり無理がありますか。。。
gawkはlinuxのようですね。windowsで実現する方法を求めていました。
バッチファイルでは出来そうにないのでWSH JScriptあたりを探してみたりしていました。
他手段を探してみたいと思います。ありがとうございました。
509(3): 2018/05/02(水)03:07 ID:KFhIKBMV(1/5) AAS
batでも出来るんだけど、実用な時間で出来るかと言われると何ともねえ
@echo off
setlocal
set hex=0123456789ABCDEF
set in=1234567890
set out=
set bin=
:loop
call :div2 in s
set bin=%s%%bin%
if defined in goto :loop
:loop2
set h=000%bin:~-4%
set /a h=("%h:~-4,1%<<3")+("%h:~-3,1%<<2")+("%h:~-2,1%<<1")+%h:~-1%
set bin=%bin:~0,-4%
call set out=%%hex:~%h%,1%%%out%
if defined bin goto :loop2
echo.0x%out%
endlocal
goto :eof
:div2
set dst=
set s=0
:divloop
set d=%in:~0,1%
set in=%in:~1%
set /a s=s*10+d
set /a h="s>>1"
set /a s%%=2
if defined dst (set dst=%dst%%h%) else if %h% gtr 0 set dst=%dst%%h%
if not defined in set in=%dst%&goto :eof
goto :divloop
510(1): 2018/05/02(水)03:13 ID:q7DG1Lgj(1) AAS
生きている間に終わらないってこと?
511: 2018/05/02(水)03:17 ID:KFhIKBMV(2/5) AAS
これはやっつけで作ったんで、もっとスマートにできるかも知れない
なお、div2ルーチンは最初変数を独立させるためにsetlocalで別環境にしてた名残が呼び出し元の引数に残ってる(無意味だから何で付けてるのって思わないように)
512: 2018/05/02(水)03:19 ID:KFhIKBMV(3/5) AAS
>>510
いや実際やってみればわかる
64桁程度なら一応待てる??時間内で終わるよ?
inに10進数値をセットするが、%1に書き替えて起動時の引数で与えるようにすれば色々試せるだろう
513: 2018/05/02(水)06:44 ID:D/jExvSh(1) AAS
awkなら速くできるの?
514(3): 2018/05/02(水)07:02 ID:ESv7owpX(1) AAS
>>509
元の質問者じゃないけど、これ動かすとたまに「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」って出る。
自分で書いたbatもループとかcallが多いとこれが出たりリダイレクトに失敗してたりする事があるんだけど何が原因?
ごくごく稀に飛ぶはずのないラベルに飛んで動作不良起こしたりもする。
515(1): 2018/05/02(水)18:25 ID:vWDYKqwa(1) AAS
>>508
これとかは?
ツール関係の小部屋
外部リンク[html]:sky.geocities.jp
C-style arbitrary precision calculator
外部リンク[lzh]:sky.geocities.jp
516(1): 2018/05/02(水)21:55 ID:KFhIKBMV(4/5) AAS
>>514
OSは何だろう?
こっちは、win7pro 64bit
通常そういう変な動作はワークエリアが残ってない場合なんかに起きる
環境変数をいっぱい定義して領域が残ってないとか
そういう場合、コマンドプロンプトを一旦閉じて再度起動して初期状態にして試してみる
win2000で環境変数領域は2048バイト、winXPでは8192バイト、それ以外はヘルプにコマンドプロンプト関連のの説明が無い
でもまあ大抵はbatに問題がある
>>509のはこっちでは70桁を指定しても正常に動作してるが、
setlocalで子環境を作ってて、サブルーチンから抜けるときにはendlocal無しにgoto :eofしてるので
その辺が問題なのかもしれない
この辺はよく分からないので、一度setlocal,endlocalを削除して試してくれ
517(1): 2018/05/02(水)22:06 ID:KFhIKBMV(5/5) AAS
>>514
そのメッセージがbat実行直後なら(つまりあまりに瞬時で実行してるように思えない場合)、
本当にbatファイルが別プロセスで使用中なのかも知れない
裏で何かのプログラムがbatファイルを握って離さないとか
(インデックスサーチとかセキュリティチェックとかは、俺は作動させてないのでどうなのかは知らない)
518: 514 2018/05/03(木)05:58 ID:KZ8lRGiM(1) AAS
>>516-517
OSはwin10 64bitです。
セキュリティソフトはWindows Defender、インデックスサーチはWindows Search、Everythingを使ってます。
これらは利用者多いのに同様の不具合は聞いたこと無いから関係無いかも?
環境変数はいくつか自分で追加したけど問題になるほど登録してるとも思えないしよく分からない。
他になにか悪さをしているソフトがあるのかなあ。
519(1): 2018/05/03(木)11:45 ID:Ox4SBvDu(1/3) AAS
>>501
もう見てないかも知れないが、
俺の古いPCで、64桁で0.4秒ほどの実行時間です
@echo off
setlocal enabledelayedexpansion
set "a=1234567890123456789012345678901234567890123456789012345678901234"
set "g=0123456789ABCDEF"
set "h="
set /a b=8,e=100000000
for /L %%i in (8,8,56) do if not "!a:~%%i,1!"=="" set /a b=%%i+8
set "a=0000000%a%"
set "a=!a:~-%b%!"
for /L %%i in (%b%,-8,8) do set /a "a%%i=1!a:~-%%i,8!-e"
:x
set /a c=0,f=0
for /L %%i in (%b%,-8,8) do set /a "d=a%%i+c*e,a%%i=d>>4f|=a%%i,c=d&15"
set "h=!g:~%c%,1!%h%"
if %f% neq 0 goto x
for /f "delims=0 tokens=*" %%i in ("%h%") do set h=%%i
echo %h%
pause
520(1): 2018/05/03(木)18:33 ID:Ox4SBvDu(2/3) AAS
>>515 の gcalcを使用すると簡単
>type a
printf("%x\n", 1234567890123456789012345678901234567890123456789012345678901234)
>gcalc < a > b
>type b
0x30046030f26f462d7ac21a27eb9d53fff233c7acd12d87e96aff2
521: 2018/05/03(木)18:53 ID:Ox4SBvDu(3/3) AAS
すまん、printfの次の行にexitを追加して
522: 501 2018/05/04(金)16:14 ID:hkAWCjpW(1) AAS
>>509
>>519
すごい!ありがとうございます!
なんか微妙だなーと思って戻ってみたら凄いスマートなのリプきてた。
gcalcとも比較してみましたがかなり早いですね。?秒二桁くらい違う。
使わせていただきます。ありがとうございました!
上下前次1-新書関写板覧索設栞歴
あと 480 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.033s