【要望】表示中フォルダ内にあるファイルNo.01795
lytton さん 11/08/27 23:40
 
アクティブの表示フォルダ内のファイル名をテキストに書き出せると便利です。

(動作イメージ)
「C:\Program Files\HmFilerClassic」を開いているときに、
メニューのツール→「ファイルリスト書き出し」を実行すると、
保存ダイアログが表示され、フォルダを指定するとFiles.txtができている。
Files.txtを開くと次の7行が書かれている、という感じでしょうか。

C:\Program Files\HmFilerClassic
HmFilerClassic.chm
HmFilerClassic.dll
HmFilerClassic.exe
HmFilerClassicInst.exe
HmFilerClassicInst.INF
HmFilerClassicScript.dll

「ツール」ツールバーに、そういう動作をするDOSコマンドを
登録しておけばいけそうな気もしますけど、いかがでしょうか。

[ ]
RE:01795 【要望】表示中フォルダ内にあるNo.01796
wtr さん 11/08/28 03:03
 
こんにちは、wtrと申します。
差し当たり、似たようなことを再現出来るスクリプトを書いてみました。
参考にして頂ければと思います。
下記サンプルは、開いているフォルダに list.txt という名前で出力します。
出力内容は、1行目が開いているフォルダのフルパスで
2行目以降がファイル・フォルダ名の列挙になります。

//getlist.js
var cnt=GetItemCount();
var dir=GetDirectory();
var txt=dir+"\n";
var fn;

for(i=0;i<cnt;i++){
   txt+=GetItemText(i)+"\n";
}

if(dir.substring(dir.length-1)=="\\"){
fn=dir+"list.txt";
}else{
fn=dir+"\\list.txt";
}

var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.CreateTextFile(fn);
f.Write(txt);
f.close();
fso=null;

[ ]
RE:01796 【要望】表示中フォルダ内にあるNo.01798
lytton さん 11/08/28 12:07
 
wtrさん、スクリプトまでかいていただき大変ありがとうございました。
早速組み込んでみました。追加で以下2件、お心当たりがあれば
ご教示いただけますと幸いです。

■質問1
list.txtがきちんと生成され、中身も期待通りだったのですが、
作成と同時に小さな小窓で、以下のエラーがでました。

'nul' は宣言されていません。
行番号: 20
エラーコード: 0 / 0x800a1391

設定した手順は以下の通りなのですが、回避策はありますでしょうか。

(1) メニューの「ツール」→ツールの整理
(2) 追加をクリック
(3) 表示名:ファイル名書き出し、パス:スクリプトの参照から、getlist.jsを選択
してOK
(4) C:\Program Files\HmFilerClassicを表示し、ツールツールバーからgetlist.js
を実行


■質問2
例えば、list.txt出力先Pathを、デスクトップに固定したいなと
下記のように書き換えてみましたが「パスが見つかりません。」
というエラーです。jsの書き方の問題なのかもしれませんが
何が誤りでしょうか。。。もしよろしければご教示下さい。

//getlist.js改、3行目と16行目を追加
var cnt=GetItemCount();
var dir=GetDirectory();
var dir2="C:\\Documents and Settings\\username\\デスクトップ"; //追加

var txt=dir+"\n";
var fn;

for(i=0;i<cnt;i++){
   txt+=GetItemText(i)+"\n";
}

if(dir.substring(dir.length-1)=="\\"){
fn=dir+"list.txt";
}else{
//fn=dir+"\\list.txt";
fn=dir2+"\\list.txt"; //追加。デスクトップ固定に変更したつもり
}

var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.CreateTextFile(fn);
f.Write(txt);
f.close();
fso=null;

[ ]
RE:01798 【要望】表示中フォルダ内にあるNo.01800
wtr さん 11/08/28 17:26
 
こんにちは。wtrです。
ご質問の回答を以下に記載します。

> ■質問1
> list.txtがきちんと生成され、中身も期待通りだったのですが、
> 作成と同時に小さな小窓で、以下のエラーがでました。
>
> 'nul' は宣言されていません。
> 行番号: 20
> エラーコード: 0 / 0x800a1391

手順は合ってると思います。
エラーについてですが、最終行の fso=null;
のあとにもうひとつ改行を入れれば出なくなると思います。

fso=null; ← ここでさらに改行

私の説明不足でした。すいません。


> ■質問2
> 例えば、list.txt出力先Pathを、デスクトップに固定したいなと
> 下記のように書き換えてみましたが「パスが見つかりません。」
> というエラーです。jsの書き方の問題なのかもしれませんが
> 何が誤りでしょうか。。。もしよろしければご教示下さい。

私の方では、同様のソースで正常に出力出来るようでした。
usernameの部分がユーザ名になっているか今一度確認お願い致します。
あと、環境がVista/7の場合は、デスクトップのパスは
C:\Users\<username>\Desktop
になるので、その辺も確認お願い致します。

ちなみに、記載して頂いたサンプルのままだと
C:\ 等のルートを出力した場合は、if文にヒットしてしまう為、
デスクトップに出力されず、dir の場所に出力されてしまいます。

元々、if文の箇所はパスの末尾が \ かどうかをチェックしている部分なので
デスクトップ固定であれば、if文自体が必要ないことになります。
以下にサンプルを記載します。

//getlist.js
var cnt=GetItemCount();
var dir=GetDirectory();

var txt=dir+"\n";

for(i=0;i<cnt;i++){
   txt+=GetItemText(i)+"\n";
}

var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.CreateTextFile("C:\\Documents and Settings\\username\\デスクトッ
プ\\list.txt");
f.Write(txt);
f.close();
fso=null;

以上です。
よろしくお願い致します。

[ ]
RE:01800 【要望】表示中フォルダ内にあるNo.01801
lytton さん 11/08/28 17:39
 
wtrさん、たびたびのご教示ありがとうございました。


>エラーについてですが、最終行の fso=null;
>のあとにもうひとつ改行を入れれば出なくなると思います。

大変失礼しました、最後に改行挿入で直りました。


>デスクトップ固定であれば、if文自体が必要ないことになります。
>以下にサンプルを記載します。

ばっちり動作しました。
永久保存版として今後も活用させていただきます。

おかげさまで大変快適です、重ねて御礼申し上げます。

[ ]