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/
いじょ。