- 北の空からみなみへ -
exblog staff

カテゴリ:&Tips;&code;( 39 )
砂場遊び /3(やっぱワンライナーが好き)
2018年 02月 20日
年末作成のバッチ修正で苦労した。
プログラミング言語が使える人なら苦もない修正だろうが、バッチのみ(せいぜい WSH ≒ VBScript 止まり)で対応させようとすると結構行数が増えていく。

修正箇所はなんのことはない。CHOICEコマンドでの選択枝で分岐する部分。
作ってしまってから気づいたのだが、Windows XPなどには CHOICE.exe が付属していなかった。
そこで、バッチのみで割と汎用的な選択ルーチンを作ろうとして、行数が長いサブルーチンとなってしまった。(詳細は more 欄追記します)
まあなんとからしきものはできたものの、CHOICE.exe では可能なタイムアウトでの自動実行処理がどうしても実装できなかった。
そこでいっそのこと、正月にコメント欄で頂戴した助言に従って、VBScript のワンライナーをバッチから吐き出す形にしてみた。そしてこの件は解決をみた。

そうそう。その過程で気付いたことをひとつ。(結構、重要)
バッチのラベルって8文字までだと思い込んでいたしネットにもそのような上級者からの助言があったのだが、バッチの砂場で検証したらそうではないらしい。(少なくとも XP以降は大丈夫)
つまり、[:TST$parameters.test] などという長かったり拡張子あったりでもきちんと区別して動くようだ。
(ついでだが、ラベル直後に &~~~ とコメントも入れておける。これは exit/b &~~ や goto ~&~~ と同じだった)

さて、タイムアウト付きポップアップのサブルーチンはこんな感じ。
:TST$popup はワンライナーを吐き出す(表示する)サブルーチンを呼びだして、.vbsファイルに吐き出させてそれを実行する。(実行前後の時刻表示 、実行後エラーレベル表示 、 終了コードをvbsからの引き継ぎ値にしている)

:DSP$popup は VBScript が コロン[:]で区切ることが可能だそうなので、それを利用したワンライナー

横長表示が嫌いな方には申し訳ございません...
:TST$popup
echo off&call :DSP$popup %1 %2 %3 %4 >$msgbox.vbs&type $msgbox.vbs
echo.%time%&cscript //nologo $msgbox.vbs
echo %time%&echo.errolevel=%errorlevel%&del $msgbox.vbs&exit/b %errorlevel%

:DSP$popup&title / message / vbYesNo+vbQuestion+vbDefaultButton2 / 秒数
echo Dim intRet:Set objShell=CreateObject("Wscript.Shell"):intRet=objShell.Popup("%~2",%4,"%~1",%3):Wscript.Quit(intRet)
exit/b

このサブルーチンを直接呼び出すための仕掛けは 温故か懐古か発掘か /3 で書いた冒頭2行です。(mvandlog.bat の冒頭)

次のコマンド入力で実行してみます。
mvandlog !/! TST$popup メッセージ実験 "リターンを二番目のボタンに設定"+vbCRLF+" OK:ハイ の戻り値=6"+vbCRLF+" NO:いいえ 戻り値=7"+vbCRLF+" タイムアウトでは時間切れ=-1" vbQuestion+vbYesNo+vbDefaultButton2 09

実行してみてポップアップ表示中の結果はこちら。(文字サイズ大きめだったため画像サイズがブログ表示にフィットできず見にくくて申し訳ない)
c0062295_20145216.gif


イエスを選んでバッチから戻った直後に次のコマンドでエラーレベル確認した。
if not errorlevel 0 (echo.時間切れでした) else if errorlevel 7 (echo.いいえを押しました) else echo.はいを押して errorlevel=%errorlevel% でした
c0062295_20183999.gif
無事に砂場のテストは完了できた。

More
[PR]
by bucmacoto | 2018-02-20 21:22 | &Tips;&code; | Trackback | Comments(0)
温故か懐古か発掘か /3
2018年 01月 24日
@if not "%~1/"=="!/!/" (goto start) else shift&shift&set exec$sub=%2&rem only sub exec[for debug and use tool]
set exec$sub>&2&set exec$sub=&goto %0&rem ←このgoto以降は戻ってこない
set exec$sub>&2&set exec$sub=&call :%0 %1 %2 %3 %4 %5 %6 %7&goto eof&rem ←こちら戻って来たのを終わらせてる
:start

:TST$mad
@rem for /f "tokens=1-30 delims=;" %%9 in ("%path%") do echo.%%~9&echo.%%~:&echo.%%~^;&echo.%%~^<&echo.%%~^=&echo.%%~^>&echo.%%~^?&echo.%%~@&echo.%%~A
for /f "tokens=1-8 delims=;" %%Z in ("%path%") do echo.%%~Z&echo.%%~[&echo.%%~^\&echo.%%~]&echo.%%~^^&echo.%%~^_&echo.%%~^`&echo.%%~a
for /f "tokens=1-4 delims=;" %%z in ("%path%") do echo.%%~{&echo.%%~^|&echo.%%~}&echo.%%~^~
exit/b
といったテスト用サブルーチンでも確かめたから、キャレット付きにすれば英数字(大文字小文字)〜一部記号までを1文字変数で使用可能なのは、コマンドライン限定ではない。
赤囲み Windows XP    緑囲み windows 10
c0062295_21250059.png
c0062295_22321712.png

上記の文字範囲が、連続して変数にできる文字。(漢字変数は文字コードが連続していてもダメケースを確認)
マルチバイトの記号領域はいけるかもだけど、確認検証は他人にお任せしたい。
単バイトの一部文字は特殊な意味・役割をもっているのだが、キャレット付きで変数として使用可能にしているという結論に。

for / f "tokenes=...." で、最大 tokens が31なのが残念。一気に長〜い展開できるなら、使い所があるかもです。


windows XP / 10 での動作確認結果
[PR]
by bucmacoto | 2018-01-24 13:37 | &Tips;&code; | Trackback | Comments(0)
しつこく cmd.exe の変数挙動いぢり
2018年 01月 06日
昔のDOSを含めある種の環境変数には特別な地位が与えられ、かなり固有の特権を有している。
特に、内部コマンド(path , prompt , date , time など)で扱えるようになっているものは、ローカル変数扱いに過ぎず親環境には反映できない。
コマンドの挙動も特有化していて、パラメータなしで入力しただけだと

path ⇒ 変数 %PATH% を表示、パラメータつけると追加
prompt ⇒ 変数 %PROMPT% をクリア(← set prompt=&rem と同じ)、パラメータつけると set PROMPT=パラメータ
date / time ⇒ 変数 %DATE% / %TIME% の設定(ただし管理者権限でないと変更不能)

という具合です。

ここで %date% %time% の両変数は、変数としては存在しているのに set コマンドで表示も消去もできないです。

> if defined date for %C in ("echo.変数dateはあるようです消してみます" "set date=" "echo.再確認してみます" "set date" "call echo.変数 %DATE% =%date%となっています") do %~C

上のワンライナーをコマンドラインで入力した結果が下記
> echo.変数dateはあるようです消してみます
変数dateはあるようです消してみます

> set date=

> echo.再確認してみます
再確認してみます

> set date
環境変数 date が定義されていません

> call echo.変数 %DATE% =2018/01/06となっています
変数 %DATE% =2018/01/06となっています
引用符つきでもしっかり展開されるのはどうみても健在ですね。

その一方でキャレット [^] はエスケープにならないと判っていてもつい頼るので、次の例示
今度はバッチで実行.
引用扱いが、コマンド出力だったりバッチ内容の方だったりするのは、ご容赦を

type temp.bat
@rem if defined は 変数 %date% が存在しているという意味で、必ず trueです。一行を縦並べに書くために使ってみました。
if defined date (
echo 単純引用は変数が消えます ⇒ "%d^ate%"
echo キャレットまみれも無駄 ⇒ %t^i^m^e: =0%
echo 二重で %d^ate%=%%d^ate%%
echo ダブル %% だと %tim^e%=%%tim^e: =0%%

rem for の変数の形で引用符に入れて実行してみます

for %%c in (
 "echo 引用符内でも単純引用はやり消えるかな ⇒ %da^te%"
 "echo キャレットまみれはどうだろう =%t^i^m^e: =0%"
 "echo キャレットなし二重はこう %%date:/=%%"
 "echo 普通にダブルでもいける %%time: =0%%"
 ) do %%~c
) else rem  ここはスペース開けるために利用しています

rem 引用符がないと、うまくいくっぽいけれど、キャレットの意味はないなぁ
for %%c in ("%%d^ate:/=%%" %%^date%% %%time%%) do echo %%~c

@echo バッチのなかから echo %%date%% と書くのと、コマンドラインで打つのでは結果が違うんですね。
echo %%date%%
echo.echo %%date%%>>test.bat & call test.bat &del test.bat

@rem パイプやリダイレクトも for /f でのコマンド結果に対する(テンポラリから)読み出していると考えて腑に落ちる。一時ファイルというのは暗黙的に作られているらしい。
@echo でもこれで、call で展開される理由づけになったか
echo %%date%%
call echo %%date%%


実行結果   (投稿後、二重引用に気付き削除修正済)
> if defined date (
echo 単純引用は変数が消えます ⇒ ""
echo キャレットまみれも無駄 ⇒ =0
echo 二重で %date%=%date%
echo ダブル % だと %time%=%time: =0%
rem for の変数の形で引用符に入れて実行してみます
for %c in ("echo 引用符内でも単純引用はやり消えるかな ⇒ " "echo キャレットまみれはどうだろう = =0" "echo キャレットなし二重はこう %date:/=%" "echo 普通にダブルでもいける %time: =0%") do %~c
)
単純引用は変数が消えます ⇒ ""
キャレットまみれも無駄 ⇒ =0
二重で %date%=%date%
ダブル % だと %time%=%time: =0%

> echo 引用符内でも単純引用はやり消えるかな ⇒
引用符内でも単純引用はやり消えるかな ⇒

> echo キャレットまみれはどうだろう = =0
キャレットまみれはどうだろう = =0

> echo キャレットなし二重はこう %date:/=%
キャレットなし二重はこう %date:/=%

> echo 普通にダブルでもいける %time: =0%
普通にダブルでもいける %time: =0%

> rem 引用符がないと、うまくいくっぽいけれど、キャレットの意味はないなぁ

> for %c in ("%d^ate:/=%" %date% %time%) do echo %~c

> echo %d^ate:/=%
%d^ate:/=%

> echo %date%
%date%

> echo %time%
%time%
バッチのなかから echo %date% と書くのと、コマンドラインで打つのでは結果が違うんですね。

> echo %date%
%date%

> echo.echo %date% 1>>test.bat & call test.bat & del test.bat

> echo 2018/01/06
2018/01/06
でもこれで、call で展開される理由づけになったか

> echo %date%
%date%

> call echo %date%
2018/01/06


More 1押し
[PR]
by bucmacoto | 2018-01-06 23:21 | &Tips;&code; | Trackback | Comments(0)
cmd.exe 変数挙動の確認中
2018年 01月 04日
実のところ、遥か昔(バブル期)に、MSDOS 3.1 あたりから win 3.1 くらいまではコマンドプロンプトいじりに燃えてたものの、win 95 始まるあたりからは環境オタクな作業も消えた。今回初めてNT系以降の拡張された環境変数の機能を知った。その程度で、かなり喜べたほどの低レベルオタクなので、当初の目的が達成できたことで舞い上がっていた。
(環境変数内の子指定を変数でできるとか、二重callで遅延環境みたいに動くとか新発見気分)

ですが、よく考えたら挙動をきちんと理解できてはいないし、自宅には やや古いmacはあってもPCはないので、この機会に少しまとめておこうと思う。

コマンドラインから直接打ち込んだ場合と、バッチ内で引用しようと思った場合、違うというのもある。


まずは、少しずつ
[PR]
by bucmacoto | 2018-01-04 23:02 | &Tips;&code; | Trackback | Comments(0)
謹賀新年 そして いまさらコマンドライン(CMD.exe)いぢり
2018年 01月 01日
昨年末にほぼ20年ぶりにバッチと格闘しました。
もっとも30年前~20年前くらいまでの間、AUTOEXEC.bat や CONFIG.sys ばかりいじっていただけです。
それでも仕事がらみで、隔離されたセキュアな環境(つまりWindows標準のものしか使えない)で、最多のマシンがXP(8割)という状態で、ニッチ業務なので自力でやってみたら、大いにハマりました。

やってることは、あるフォルダ配下の複数サブフォルダに画像サーバーから吐き出された同質ファイル=サイズ誤差数十バイトなやつらを、サイズチェックして、一貫性のある名前にして、別途排出のINDEX参照して、IDや性別をファイル名にもたせ、それを転送先に移動し、相手先に通知する。だけなので、まあバッチでできたのですが、その過程でいろいろいろいろ気付いて年末は悶絶してました。

インターネット上の情報にずいぶん助けられ、勉強になったので、少しでも恩返ししようと記事を書くことに。
バッチ職人なんて、かつてのMultiPlan職人ぐらいに先行き滅び去るのでしょうが、まあ、歴史的観点で俯瞰すると似たことってありそうなものなので意味もあるかなって思ったのです。

More(とりあえず、正月だけ平均一日一題くらい数日書く・・かも)
[PR]
by bucmacoto | 2018-01-01 22:03 | &Tips;&code; | Trackback | Comments(2)
すごく久しぶりに投稿します
2014年 11月 28日
内容としては、おそらくほんの短期間なネタ話。
iPhone 6/6plus 出たあとで今更なdocomoメールの話です。

本題前に、この4年間の近況報告しておきます。
今、、入院中です。苦笑
DVT+PEで、昨夜下大静脈フィルタを置いて一安心したところ。
どうやらこの夏に半ばサービス残業の仕事をやりすぎて、毎週末のテニスを減らしたのが原因のひとつ。9月に胸痛あってその2週前に右足ばかり痛かったのでその頃の発症と推定。
テニスは3年半前にやり始めて、(30年間に中古で買ったラケットを引っ張り出して)昨年はようやく草大会のBクラス優勝。相方は私より半年後に始めた学校教諭♂。まあ、これはまぐれ。
メタボ対策に壁打ちから始めてハマったのですが、職場施設で使用機器の更新やら、新作業の増加やらで、キーボード作業が激増したものの、週末時間を注ぎ込んだテニスでようやくバランスがとれていたっぽいです。

ところが、この夏はコート確保やメンバー間連絡に尽力してくださっていた方が体調崩し、プレー時間が激減。さらに私も、書類の電子化で千件超にデータを処理するのに一ヶ月もテニス禁欲して、とうとう下肢静脈血栓症+肺塞栓に至った次第。ちなみに2週間前に冠動脈CTAや心エコーや動脈硬化判定用脈波速度検査などは、オールクリアだったのです。血管年齢が実年齢より十歳若く出たしね。
ところが、CRPなどの炎症マーカーが上がってDダイマーの検査は正常上限の5倍。そこに持ってきて先週の月曜にワークステーション作業で根を詰めたら右下腿が熱を持って腫れて痛み出しました。
ということで、状況的に深部静脈血栓症 ーー 一昔前にエコノミー症候群 いまは ロングフライトシンドローム(ファーストクラス座席でも発症するから?)でありそうとは心当たりがついたのですが、今週になって急速に膝上まで痛みが広がり、静脈弁のところで押すと痛い上に、歩いてポンピングしても楽にならない。これ、先週は数キロも歩くと少し腫れが楽になったのですがね。。

結局昨日午後に検査した時点では、深大腿静脈と大伏在静脈がほぼ血栓で埋まっていた次第です。


では、本題に。
docomoがiPhone/iPadを扱うようになって、MVMOな安いSIMでも通信が行えるようになってきましたが、その恩恵にやすぅーーく預かりたいと思うと結構はまりまして。。その記録です。

状況は以下の通り。
もうすぐ高校生が終わる娘は2年以上前からスマホが欲しい。でも親は否定的だし、小遣いも少ないし、バイトはあまりやりたくない。その気持をdocomo店の若い店員さんに、タブレットの二台持ちがお得 と勧誘され、foma(3G)のガラケーに加えてXi(lTE = 3.9G)Androidタブレットを契約した。
しかも最初の月は。iモードとXi両方を使ってしまったため、15K円を超える請求に泣いた。タブレットの方はタダという理解で契約したらしい娘にとってはタダどころの騒ぎではなかった。

そして今年の8月に二年縛り明けの違約金なしで解約可能な月だったので、タブレットを解約した。SIMアンロックした、タブレットに500円SIM入れて運用を開始。
ところがこのタブレットの、9月半ばに故障し、修理する羽目に。。なんとか母親が抗議して、購入時に3年間の故障に対応という文言みつけ、修理自体は無料。しかしながら、なんとこれで4回目の修理となる故障だったらしい。そしてLINEなしではいられないいまどき娘は、iPhone 4sを友人から貰った。

そのau版iPhone 4s に、docomo系MVMOのSIMで通信し、Iモードのメアドを使えるようにするのが今回のミッションでありました。

foma SIM(フューチャーフォン=ガラケー内UIMカード)とAndroid 2.3.4(SO-03C = Xperia RAY)
[PR]
by bucmacoto | 2014-11-28 22:39 | &Tips;&code; | Trackback | Comments(0)
OpenOffice.org Calc Portable (動的集最新集計表の作成 )
2010年 07月 30日
先日に OpenOffice.org Calc Portable で書いた集計式は、文字列形式で記述した式を必要に応じて再計算させるものでした。

月報や季報などで、締期を迎えてその部分だけ計算をさせる目的には、あのような方法が適切だと思っています。いわば、必要時にコンパイルするみたいな感覚で運用するケースでは、常時(=つまり再計算される度に)式を再評価させるのを避ける工夫の結果、あの方法を私は採用しています。

ただし、日々の状態を刻々と知っておきたい場合もあります。
この動的な計算を、最終日(データの最終行)を取得して算出する方法をこちらに記述します。
例によって、あまり初心者にわかりやすくはないかと思いますが、ご容赦ください。
(説明能力不足なので、そこに配慮しようとすると記事が仕上がらないという自分本位の理由です)


脇道な話ですが、式を書くときに特定のセル範囲に「名前」を設定するやり方を。私は今はほとんどやりません。(昔はけっこうやってみた)
 やめた理由は、式のメンテにかえって苦労した経験からです。
 名前の範囲を壊さないように、挿入や削除に気を使ったり、壊してしまった範囲名の回復や再設定に窮したり、困ったことがよくありましたから。

そして、このようにスタイルを変えて(文字式にしたり、直接の式にしたり、範囲名を使ったり、参照をインデックスにしたり)あれこれやると、「習うより慣れろ」効果が働いてマニュアルを反復して読むよりも関数って使えるようになる。< 無知なやつのいいわけかな ^^;w


ここで示す方法は、次のことが前提となる。

  1. 日付順にレコード(データの行)がならんでいること。
    いわば昇順ソートされた状態。

  2. 日付列(フィールド)には、空白データが存在しないこと。
    つまり空白データは最終行の次にあること。

この前提を満たしていると、match関数の第1引数(最初のパラメータ)に「""」を指定することで最終行を算定できる。また、途中の日付の始まる(または終わる)行も求められるから、あとはoffset関数を使えば前回のような「計算範囲指定」での計算式を記述できることになります。

そして、試した範囲では、OpenOffice.org Calc Portable は、csvファイルを外部参照しても統計を出すことができるみたいで、応用範囲は広そうです。

More
[PR]
by bucmacoto | 2010-07-30 01:27 | &Tips;&code; | Trackback | Comments(2)
OpenOffice.org Calc Portable
2010年 07月 09日
職場に画像サーバが導入されて9ヶ月半になる。

主サーバはLinux。こちらは我々ユーザはいっさい触れることがない。(予定停電時にシャットダウンと起動処理を行う程度)

画像を主サーバに入力するゲートウェイとして、3台のXPマシンがある。
運用6ヶ月目に導入された、セキュリティサーバが1台(これもWindows XP)。
その他、画像生成や変換するコンピュータとしては、Win-Vista×1、SGI×1、DOS×1、Win-XP×1、組み込みOS(Tronかな?)×1といったところ。

画像サーバから画像を閲覧するヴューア機はすべてWindowsXP(Professional)でモニタは縦配置となっている。(画像Viewerには最低限ともいわれる1200×1600LCDだが、IPS液晶なのでコントラストと平坦度は合格点)

ギガビットEtherを触れるのは初めてだったので、転送速度を幾度か確かめたら、ピーク性能で35%〜40%程度のものでした。つまり、350Mbps〜400Mbpsが実効転送速度の上限となっていました。
(ちなみに私は反対だったのですが、全ビューア端末にセキュリティ対策ソフトを導入されたらこの速度が5%=5Mbps程度まで低下しました。結局「NET STOP "ウイルス対策のプロキシサービス"」というアイコンを置いてセキュリティサーバが巡回してサービスを立ち上げる度に停止させてます ^^;)


さて、画像の管理は職務なのでいくらでもがんばりますが、集計や報告業務ってのはなんの予算もないのが中小企業。
・・・というか、私はこれまで表計算を自腹でしか(あ、あとはDOSの国民機時代に違法コピーもあるが)使えたことがない気がします。

ですが、エクセルにしてもGoogle表計算にしても、インストールが必要なソフトやネット接続前提のものは、マシンパフォーマンスやセキュリティの面で勝手に導入するのははばかられます。
ちなみに、完全にインターネット回線からは切り離されており、メーカーのリモートメンテも専用電話回線経由のクローズドネットワークです。

そんな環境でありがたいのが、OpenOffice.org の Portable版です。
USBメモリにのせられる・・・ということは、ネットワークサーバの片隅に共有フォルダ(SharedDocs)設置しておくと、どの端末でもいつでも実行ファイルも作業ファイルも開くことができるということ。これはかなり快適です。
現行の最新バージョンは、3.2.0 > Localization | PortableApps.com - Portable software for USB drives

DOSのMultiplanとかに馴染んで、MS-OfficeだってPro版は97版どまりの私には、十分すぎる高機能で重宝しています。
ただし、現在使用しているのは、3.1のほうです。3.2は一度入れてみたのですが常用からは外しました。外した理由は、(USBとかハードディスクのフォルダとかの実ディスク収納なら問題ないのですが)ネットワーク経由で起動するとヘルプが見られないバグがあるからです。ちなみに、windowsのデスクトップにフォルダ作ってそこに入れてみると起動すら不可でした。
3.2のほうがグラフの再描画など、xls形式と相互運用するには便利になっているのですがね。やむなし。
ヘルプと首っ引きでないと関数を使いこなせない私には、ヘルプが即座に参照できないのは困るのでした。

more
[PR]
by bucmacoto | 2010-07-09 00:22 | &Tips;&code; | Trackback | Comments(2)
はな花ハナ華 = 七変化(へっぽこサンプル)
2009年 05月 04日
ひっさ~~~しぶりに、htmlのへっぽこ技法を書いてみましょう。
 もしかしたら、いやおそらく、むしろきっと、分りにくい記事になるんだろうなぁ(苦笑)

前回記事 (どちらも別窓が開きます) に示した、CSSのA要素にマウスオーバー表示を施していると、この記事のテクニックが使用可能となります。

画像切り替えのCSS設定を利用して、複数画像を表示させようという企画です。
いつもと同じく、書きながら検証するので、記事完成までコメント不可としております。

こちらは雛形。 文字の代わりに画像を入れると画像切替え用途の箱として使えます。
(一応、512x512 の画像が入るサイズを仮作成してみました)




ソースを示します。 勘のいい方はこの色画像を縮小画像に変えることで、ユーザーが一覧からマウスのせによって拡大表示する、というように使えることがお分かりになるかもしれません。
<a name="box" ID="box"></a>
<div style="position:relative;height:572px;line-height:512px;text-align:center"><div style="height:40px;opacity:0.3;filter:alpha(opacity=30)"></div><a href="#box" class="lnk"><span style="position:absolute;left:5px;top:0"><img src="http://pds.exblog.jp/pds/1/200607/05/95/blank.gif" width="64" height="36" border="0" alt="Red" style="background:rgb(255,0,0)"/></span><span class="mon" style="color:red">RED</span></a><a href="#box" class="lnk"><span style="position:absolute;left:74px;top:0"><img src="http://pds.exblog.jp/pds/1/200607/05/95/blank.gif" width="64" height="36" border="0" alt="Orange" style="background:rgb(255,208,0)"/></span><span class="mon" style="color:orange">Orange</span></a><a href="#box" class="lnk"><span style="position:absolute;left:143px;top:0"><img src="http://pds.exblog.jp/pds/1/200607/05/95/blank.gif" width="64" height="36" border="0" alt="Yellow" style="background:rgb(255,255,0)"/></span><span class="mon" style="color:yellow">Yellow</span></a><a href="#box" class="lnk"><span style="position:absolute;left:212px;top:0"><img src="http://pds.exblog.jp/pds/1/200607/05/95/blank.gif" width="64" height="36" border="0" alt="Green" style="background:rgb(0,255,0)"/></span><span class="mon"style="color:green">Green</span></a><a href="#box" class="lnk"><span style="position:absolute;left:281px;top:0"><img src="http://pds.exblog.jp/pds/1/200607/05/95/blank.gif" width="64" height="36" border="0" alt="Blue" style="background:rgb(0,0,255)"/></span><span class="mon"style="color:blue">Blue</span></a><a href="#box" class="lnk"><span style="position:absolute;left:350px;top:0"><img src="http://pds.exblog.jp/pds/1/200607/05/95/blank.gif" width="64" height="36" border="0" alt="Navy" style="background:rgb(0,0,127)"/></span><span class="mon"style="color:navy">Navy</span></a><a href="#box" class="lnk"><span style="position:absolute;left:419px;top:0"><img src="http://pds.exblog.jp/pds/1/200607/05/95/blank.gif" width="64" height="36" border="0" alt="Purple" style="background:rgb(127,0,127)"/></span><span class="mon"style="color:purple">Purple</span></a></div>

post at 2009.05/04
last edit at 2009.05/17


7images (Rainbow) x2 + 7
[PR]
by bucmacoto | 2009-05-04 21:43 | &Tips;&code; | Trackback | Comments(0)
WindowsXP(SP3)上で圧縮フォルダを展開したフォルダ
2008年 10月 28日
先月受験した(そして落ちた)認定試験の e-Learning 教材で遭遇した現象だ。

Windows2000機 と Windows XPのServicePack 2 のマシンでは、問題なく視聴できるのに、自宅のXP(SP3)では、なぜか再生できない。 そのようなコンテンツがあった。

元となったZIPファイルは、再ダウンロードして問題ないことを確かめた。
そして、解凍方法によって再生不可の場合があることが判明した。
具体的には、ZIPファイル全体(圧縮フォルダの丸ごと)を「すべて展開(A)」によって、圧縮フォルダの展開ウィザードを起動して解凍するとこの問題が発生した。
それに対し、個別のファイルを指定した解凍をすると問題は起きなかった。

SP3+丸ごと+ウィザード経由 の時に限定して、この問題は起きていた。

c0062295_135747.gif

 正直に言うと、これってService Pack 3 のバグかと思ったのだった ^^;

実は、SP3のセキュリティ強化によって、他のPC上で圧縮されたZIPファイルには、丸ごと解凍に限ってフラグ(しるし)が付いているようなのだ。
プロパティを見ることで、そのフラグの存在がわかる。

c0062295_11916100.gif

このフラグは、圧縮フォルダの中からファイルを個別指定した場合の解凍では付着しないのだ。

エクスプローラで、プロパティを確かめるなんてことはあまり行わない。

セキュリティといい、不正コピー対策といい、時代が進歩するということは、シンプルで素朴な一貫性と分かり易さが失われてゆくことでもあるのだな。。(年寄りのグチ)
[PR]
by bucmacoto | 2008-10-28 01:25 | &Tips;&code; | Trackback | Comments(2)