[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
487
(1): 2018/04/22(日)06:56 ID:Lev+VBnm(1/2) AAS
@echo off
type nul>out.txt
setlocal enabledelayedexpansion
set n=0
for /f "delims=" %%i in (in.txt) do (
set "d!n!=%%i" & set /a "n=(n+1)%%3"
if !n! equ 2 if not "%%i"=="count" echo.!d0!>>out.txt&set n=1& set "d0=%%i"
if !n! equ 0 echo.!d0! !d2!>>out.txt
)

!d0!と!d2!の間は普通にtab入力
488: 2018/04/22(日)07:14 ID:H/AU6k7y(1) AAS
だからなに?
489: 2018/04/22(日)19:58 ID:Ai4JHVEf(1) AAS
バッチは不特定多数に提供するんでなければ、やっつけでいいんだよ
取り合えず用が足せればいい
ああいう場合にどうだとか余計なことはそういう場面に遭遇してから対処すればいい
まあ違う考えを持ってる人もいるだろうから俺の考えではと限定しての意見だが
490: 2018/04/22(日)21:50 ID:Lev+VBnm(2/2) AAS
>>487もやっつけだよ
不具合だらけ
491: 2018/04/23(月)00:48 ID:+coOi68A(1/2) AAS
元となったデータを見てると、何かのプログラムで出力した結果のようだから
イレギュラーなデータはそもそもあり得ないのかもしれない
それをイレギュラーなデータがあったらと考えていろいろ対処するのどんなもんなのかな
492: 2018/04/23(月)01:49 ID:+coOi68A(2/2) AAS
あと、>>486は、こういう処理をしているんだからそれを念頭においてねってことだけで、
何もその点を修正しろとか言ってないわけよ
>>486も、何をしてるのか分かっていて使う分にはそれで良いと思ってるんじゃないのかな
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を削除して試してくれ
1-
あと 486 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.020s