作者: Bruce.
日時: 2007/11/1(12:52)
Bruce.です。

davi writes:

> Bruce.さん  <  こん??は でび です
> 
> # メロンパンなら…。

かりかりもふもふ?

> for /l %%i in (1,1,%OUT%) do (
> set x="0000%%i"
> copy %IN%.bmp %IN%-!x:~-5,-1!.bmp > nul
> )
> 
> で4桁固定出力できました。
> 10000だと最後が切り捨てられるのを確認。
> 
> でも動作原理が理解できない。

ん、難しいこたないと思いますよ。

まず、必要な桁数の0を作る → "0000"
実際に出力する数字を作る → %%i
連結する → "0000%%i"
適当な変数にセットする → set x="0000%%i"
そこから必要な桁数を取り出す → !x:~-5,-1!

00 | 0012
   ↑ 末尾の一つ手前までここから切り取る。
末尾の一つ手前なのは、'"'がくっついてるのでその対処のため。

%x:~-5,-1% じゃなくて !x:~-5,-1!なのは、実際に % 囲みで
echo しながら見てみるとわかると思います。


> > んで、作用はCとおんなじ。
> 
> ベースとしてcを知らんとわからんわけですか。

まあ見るからにCの演算子もって来ましたという感じですし。

> 調べてみましたが、XORとの違いは二つを比較でなく一つで
> 完結できる、という事らしいけど、感覚的にイマイチ、???です。

なぜに xor?

Zazelさんの発言にあるようにこれは数値データのビットの反転です。
数値を表すビット数がわかりませんけど(多分16か32だと思いますが)、

~0000_0001 → 1111_1110 == -2
~1111_1110 → 0000_0001 == 1
~0000_0000 → 1111_1111 == -1

のような演算です(この例では8ビットにしています)。

> > >set /a x=1+1
> > 2
> 
> 以下も同様だけど、ここでの数値って2進、10進、16進の
> どれを指すのか?と。

断りがなければ十進でしょう。


全般 - CMD.EXE TIPs
http://it-is-it.net/CMD/%C1%B4%C8%CC/

コマンド別/set - CMD.EXE TIPs
http://it-is-it.net/CMD/%A5%B3%A5%DE%A5%F3%A5%C9%CA%CC/set/


いじょ。