HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0423
名も無き冒険者フォルダ サイズ48解決


名も無き冒険者

リンク

2011/4/23(Sat) 21:21:08|NO.38642

フォルダのサイズを確認するには、どうすればいいのでしょうか?

フォルダサイズが50MB以上だった場合はDIALOG""でメッセージなどを表示させたいです



この記事に返信する


ORZ

リンク

2011/4/23(Sat) 21:26:02|NO.38643

フォルダを右クリックしてでてくるメニューでプロパティを選択して
しばらく待てば確認できますよ。



名も無き冒険者

リンク

2011/4/23(Sat) 22:01:38|NO.38644

HSP掲示板で何をおっしゃっているのですか



que

リンク

2011/4/23(Sat) 22:15:14|NO.38645

一発で取得する方法はないと思います。
dirlist2とexistでフォルダ内のすべてのファイルの合計を計算する必要があります。



com

リンク

2011/4/23(Sat) 22:50:56|NO.38647

comコンポーネントで簡単にできるよ・・・
Scripting.FileSystemObject



mamo

リンク

2011/4/26(Tue) 12:17:53|NO.38698

ORZの書いたことから何も連想できないのかな
Windowsに対してフォルダの各種情報をくれと言えば答えてくれそうな気がしない?



μ

リンク

2011/4/26(Tue) 16:58:43|NO.38700

windowsに交渉するのは当たり前で、その方法を聞いているんだと思います。



いつき

リンク

2011/4/26(Tue) 18:34:53|NO.38704

うん、その方法なら既にqueさんが答えを出しているんだけどね・・・。



who

リンク

2011/4/26(Tue) 18:40:12|NO.38705

フォルダのサイズは取得できませんけど
再帰を使ってその中にあるファイルのサイズを全てたせばできます。



p、USAGI

リンク

2011/4/27(Wed) 05:57:43|NO.38716

queさんの方法。
合計2GBまでなら、こんな感じになります。
これは一例です、他にも方法があります。
それと、各命令の意味は自分で調べてください。
#include "hspext.as"
sdim seldir selfolder seldir,"" if stat : end ;エラーまたは、キャンセル chdir seldir dirlist2h 1 dirlist2 listsize,"*",1 listnum=stat sdim filelist,listsize dirlist2r filelist notesel filelist dim folsize repeat listnum noteget filename,cnt exist ""+seldir+"\\"+filename folsize+=strsize await 1 loop mes strf("%4.2fMB (%dByte)",(0.0+folsize)/1048576,folsize) mes "隠しファイル、システム属性ファイルを含む"



woodfields

リンク

2011/4/27(Wed) 15:29:21|NO.38723

comqueさんの方法。
(システム属性のフォルダは相手してくれません。)

#const FILE_ATTRIBUTE_NORMAL 0 ; 標準ファイル #const FILE_ATTRIBUTE_READONLY 1 ; 読み込み専用属性 #const FILE_ATTRIBUTE_HIDDEN 2 ; 隠しファイル属性 #const FILE_ATTRIBUTE_SYSTEM 4 ; システムファイル属性 #const FILE_ATTRIBUTE_VOLUME 8 ; ディスクドライブボリュームラベル(変更不可) #const FILE_ATTRIBUTE_DIRECTORY 16 ; ディレクトリ属性(変更不可) #const FILE_ATTRIBUTE_ARCHIVE 32 ; アーカイブ属性 #const FILE_ATTRIBUTE_ALIAS 64 ; リンクまたはショートカット(変更不可) #const FILE_ATTRIBUTE_COMPRESSED 128 ; 圧縮ファイル(変更不可) pathname=dir_exe+"\\docs" newcom oFS,"Scripting.FileSystemObject" if oFS("FolderExists",pathname) { oFolder=oFS("GetFolder", pathname) mes oFolder("Path") if oFolder("Attributes") & FILE_ATTRIBUTE_DIRECTORY { if (oFolder("Attributes") & FILE_ATTRIBUTE_HIDDE) | (oFolder("Attributes") & FILE_ATTRIBUTE_SYSTEM) { mes "隠しファイル属性 または システムファイル属性 のディレクトリです" }else{ mes "通常のディレクトリです(隠し属性/システム属性ではない)" mes ""+oFolder("Size")/1024+"KB" } } } delcom oFS



p、USAGI

リンク

2011/4/27(Wed) 18:09:07|NO.38726

>woodfieldsさん
woodfieldsさんの環境はなんですか?
HSP3.1ですか?
HSP3.2以降は、
pathname=dir_exe+"\\doclib"
でないとそのスクリプトは動作しないと思います。



名も無き冒険者

リンク

2011/4/27(Wed) 19:15:43|NO.38727

時間の都合上パソコンが出来ず回答が送れて申し訳ありません

お蔭様でフォルダサイズを取得する事に成功しました

50MB以上の場合は、dialogやprintなどを表示させる事などは可能でしょうか?

回答よろしくお願いします



cookies

リンク

2011/4/27(Wed) 19:19:25|NO.38728

>50MB以上の場合は、dialogやprintなどを表示させる事などは可能でしょうか?
可能です。
ifって知ってるかな????



名も無き冒険者

リンク

2011/4/27(Wed) 20:32:03|NO.38732

一応ifなら知っています
if命令で50MB以上だった場合はdialog命令とかはつかめているのですが

サイズの指定方法が分かりません (説明が下手で申し訳ないです)



れみはる

リンク

2011/4/27(Wed) 21:10:32|NO.38735

>50MB以上の場合は、dialogやprintなどを表示させる事などは可能でしょうか?
if~else文

ついてにprint命令は推奨されてないみたいなのでmes命令を推奨






>>NO.38643



>>NO.38643



ORZ

リンク

2011/4/27(Wed) 21:21:42|NO.38737

サイズを取得することができたと言っているのに、それをif文にぶち込む方法が
わからないから教えてくれという。思考能力の致命的欠如といえよう。
「フォルダのサイズがxx以上の時ダイアログを出すコードを書いてください」と最初から
言っておけば2〜3レスで終わったはずだ。最初に必要な情報は全部出そうな。



cookies

リンク

2011/4/27(Wed) 22:03:35|NO.38743

>サイズの指定方法が分かりません (説明が下手で申し訳ないです)
よく意味がわかりません。

38716のp、USAGIさんのスクリプトの下から2行目、
 mes strf("%4.2fMB (%dByte)",(0.0+folsize)/1048576,folsize)
がMBとByte単位にサイズを出力しているのはわかりますよね?
「(0.0+folsize)/1048576」MBのサイズがあることになります。

それはわかってるのかな?
ifでの大小の表記の仕方がわからないのかな?
もしそうなら、ifを知っているとはいえない。HDLのifを参照のこと。



名も無き冒険者

リンク

2011/4/27(Wed) 22:11:29|NO.38744

>>ORZちゃん
はい、そうですね

>>cookies様
回答ありがとうございます^^!!
この意見を参考にこれからソース組んでみます



who

リンク

2011/4/27(Wed) 22:50:48|NO.38747

>>思考能力の致命的欠如
笑。



if maler

リンク

2011/4/28(Thu) 17:15:17|NO.38767

if命令についても調べ大小の表記についても分かったつもりなのですが応用出来ません

フォルダのサイズがxx以上の時ダイアログを出すコードを書いてください



晩御飯

リンク

2011/4/28(Thu) 17:57:31|NO.38769

応用はできないものの基礎はできるらしいので
変数aの値が10より大きかったらmes命令で適当なメッセージを出すプログラム
を書いてみて。



ORZ

リンク

2011/4/28(Thu) 18:10:13|NO.38770

名前を変えるといろいろ面倒なので変えないように。
つまりフォルダのサイズを取得できたことになってないんだな。フォルダのサイズを取得して
画面に表示するプログラムを動かせるようになっただけだ。貼られたコードの
どの部分でどの様にサイズを出力しているか、そしてその値はどこから来るのかそれを
追っていくことを『勉強』という。
dialogを出すお望みのコードが貼られていないのは必要な答えが既に貼られているからだ。
1+1=2だと示したのに1+2がわからないと言われたら教える側はどうしたらいい。
さらに、1+2は1に1を2回加えたものだよと但し書きまで加えられているのに、だ。もう一度
貼られたコードや解説を徹頭徹尾見直し、考え、それでもだめなら呆れた誰かがコードを
貼ってくれるまで祈り続けるしかない。



名も無き冒険者

リンク

2011/4/28(Thu) 18:26:25|NO.38773

>>ORZちゃん
そうですね
コードを書いてくださいというのは適切じゃなかったようで^^;

>>晩御飯様


a=15 if a>10 : mes "10以上" : else : mes "10以下" stop


A=15 if a>10 : goto *hensuu mes "Aは10以下だお" stop *hensuu mes "10より大きいお!" stop



晩御飯

リンク

2011/4/28(Thu) 18:35:30|NO.38778

おk,じゃあ次は
「変数aの値が10より大きかったらmes命令で適当なメッセージを出すプログラム」だけ
を書いてみて。



名も無き冒険者

リンク

2011/4/28(Thu) 18:43:47|NO.38779

もう書きましたよ^^
話がずれているようなので戻しましょうか



Cookies

リンク

2011/4/28(Thu) 18:49:31|NO.38780

晩御飯さんと冒険者さんのに口出ししてすいません。

>変数aの値が10より大きかったらmes命令で適当なメッセージを出すプログラムを書いてみて。
>「変数aの値が10より大きかったらmes命令で適当なメッセージを出すプログラム」だけを書いてみて。
違いはなんでしょう?
かぎかっこ以外に一つ違いがありますよね?



μ

リンク

2011/4/28(Thu) 20:33:07|NO.38782

揚げ足を取るのが趣味なのか存じませんが、あんまり不毛ないざこざは他のユーザーの迷惑になるのでやめてください。



KA

リンク

2011/4/28(Thu) 23:02:30|NO.38790

「冒険者」では無く「開拓者」に成りましょう。



名も無き冒険者

リンク

2011/4/29(Fri) 22:29:20|NO.38796

あれから色々調べ組んでみたのですが中々上手くいかず・・・
誰かサンプルソース書いてくれませんか・・・・



Cookies

リンク

2011/4/29(Fri) 22:42:23|NO.38797

あんまりサンプルを書くのはみんな嫌なもんです。
色々調べ組んでみた、そのスクリプトを簡単にして乗っけてみてください。
それを直してもらう方が、あなたは理解しやすいだろうし、ためになり、
こっちも回答しやすくなります。



mamo

リンク

2011/4/30(Sat) 01:11:44|NO.38798

だからさ
>「変数aの値が10より大きかったらmes命令で適当なメッセージを出すプログラム」だけ
を書いてみて。
ってあるじゃん、これが「理解」出来れば分からないはずは無いんだって。
答えにつながる様に教えてくれてるんだから。



いつき

リンク

2011/4/30(Sat) 13:18:44|NO.38799

やばいなぁ。言葉の違いは分かるけど、
自分にも、ソースに置き換えた時どうすればいいかがわからないや。
最初に書いた奴が「だけ」にはならないって事だよね。
どこか無駄な部分があるのかな・・・。



ORZ

リンク

2011/4/30(Sat) 13:37:28|NO.38800

おれには晩御飯氏の意図はよくわからんが、それ以上に何故ここまでしてもらいながら
もらった答えを活用できないのかが理解できない。いままでのコードを参考に組んだと
目下のところ言い張るソースコードを頼むから見せてくれ。どこで何をどう悩んでいるのか
もう誰にもわからんはずだ。解法まで示してるんだぞ。わかりません、うまくいきませんと
ただ書くなとどれだけ書けばみんな理解するんだ?



skyblue

リンク

2011/4/30(Sat) 19:10:42|NO.38801

どうせならgetfilesize関数を使って第二引数も指定して、
64bit値を取得したら第二引数で指定した変数に入っているDWORDをbass4hspのbass_hiwordで
さらに上位ワードを取得して0x320以上だったら50MB以上です。



f(休日出勤中)

リンク

2011/4/30(Sat) 21:32:36|NO.38802

NO.38727 by 名も無き冒険者

このコメントを見る限り、

NO.38716 by p、USAGI
NO.38723 by woodfields

彼ら二人ののスクリプトのどちらかを使用して、フォルダサイズ取得が出来たらしい。


どちらのスクリプトも「***BYTE」や「***KB」とフォルダ容量を表示している。
にも関わらず、

>50MB以上の場合は、dialogやprintなどを表示させる事などは可能でしょうか?

>フォルダのサイズがxx以上の時ダイアログを出すコードを書いてください

>あれから色々調べ組んでみたのですが中々上手くいかず・・・
>誰かサンプルソース書いてくれませんか・・・・




・・・・・。

ちょっと、その「組んでみたスクリプト」を見せてみなさい。
それが早そうだ。



p、USAGI

リンク

2011/5/1(Sun) 00:14:07|NO.38805

>名も無き冒険者さん
その上手くいかなかったスクリプトを未完成でもいいので、
丸ごとココに書き込んでみれば?
そうすれば皆で、正しく動作するものに書き換えてくれると思うよ。



通りすがり

リンク

2011/5/1(Sun) 01:50:22|NO.38806

まいど、f さんの ( ^ω^)・・・ な反応に笑ってしまう。



晩御飯

リンク

2011/5/1(Sun) 02:09:29|NO.38807

この晩御飯とかいうやつそんな簡単なことわざわざ聞いてどうすんだよあほかよ
で済めば良かったはずなんだ。どうしてこうなった。



たんす

リンク

2011/5/1(Sun) 02:38:27|NO.38808

>サイズの指定方法が分かりません
「取得したフォルダサイズはバイト単位であって、
メガバイト単位じゃないからifでうまく扱えていない」ってことなのかな?

それとも「フォルダサイズが格納された変数がどれなのか分からない」のかな・・・


>(説明が下手で申し訳ないです)
組んでみたスクリプトが開示されれば、どんな処理をしているのか分かりますので、
文章で説明されるより「誤解や情報不足による困惑」が少なくなると思います。



名も無き開拓者

リンク

2011/5/1(Sun) 13:16:27|NO.38814


#include "hspext.as" sdim seldir selfolder seldir,"" if stat : end chdir seldir dirlist2h 1 dirlist2 listsize,"*",1 listnum=stat sdim filelist,listsize dirlist2r filelist notesel filelist dim folsize repeat listnum noteget filename,cnt exist ""+seldir+"\\"+filename folsize+=strsize await 1 loop mes strf("%4.2fMB (%dByte)",(0.0+folsize)/1048576,folsize) a = 0.0+folsize if a>100000000 : mes "Aの方が大きい" : else : mes "Aの方が小さい" stop

回答が遅れて申し訳ないです
こんな感じのソースです
『は?何そのソース、意味わかんねぇ』っていう方も多いと思いますがご了承下さい



FPW

リンク

2011/5/1(Sun) 16:06:16|NO.38816

すでに解決しているように見えてならないのですが・・・
↑のスクリプトは「ファイルが100MBより大きかったら"Aのほうが大きい"と
表示する」ソースなんだから、あとは

100MB→50MB
mes "Aの方が大きい"→dialog

に変えるだけでは?



名も無き開拓者

リンク

2011/5/1(Sun) 16:53:07|NO.38819

あ、これで完成していたのですか!

皆さんお騒がせしました

ありがとうございました!!



ひらまる

リンク

2011/5/1(Sun) 17:48:32|NO.38820

堯福Α・ヴェ〜〜〜〜!?



名も無き開拓者

リンク

2011/5/1(Sun) 17:59:37|NO.38821

ええ?



ORZ

リンク

2011/5/1(Sun) 18:11:18|NO.38822

何がドコでどうなったのか、きちんと情報が開示されていれば、1/10のレス数で済むスレの
典型として、これからも末長く過去ログから参照されるであろう。



晩御飯

リンク

2011/5/2(Mon) 09:26:55|NO.38868

徹底的に考えることを放棄しスクリプトが貼られるまで待ち続ける姿勢には感動した
今後ガイルと名のるが良い



名も無き開拓者

リンク

2011/5/2(Mon) 23:27:37|NO.38909

>>晩御飯

ORZちゃんに貢献し言われたとおりコードを提示して下さいと書けば2,3行で済むと言われたので真似ただけです



backdrop

リンク

2011/5/3(Tue) 00:12:15|NO.38916

晩御飯さん
>徹底的に考えることを放棄しスクリプトが貼られるまで待ち続ける姿勢には感動した
>今後ガイルと名のるが良い

何の話w



ONION software Copyright 1997-2023(c) All rights reserved.