フォルダー作成への機能追加要望No.04891
つるくし さん 14/06/20 21:11
 
他のファイラー(まめFile)を使っていましたが、バージョンアップ(ASR)で使い
にくくなったので、長年エディターでお世話になっている「秀丸」ブランドに来まし
た。
追加要望なのですが、「新規作成」「フォルダー」に「日付」と「時間」を入れる機
能を追加していただけないでしょうか。
まめファイルにあった機能なのですが、頻繁に使っていたので。
ご検討をお願いします。

[ ]
RE:04891 フォルダー作成への機能追加要望No.04895
秀丸担当 さん 14/06/23 12:08
 

メニューから[新規作成]→[フォルダ]を選んだときや、「新しいフォルダ」コマ
ンドを実行したときは、ダイアログボックスなどは出ずに、新しいフォルダが名
前変更状態になっていて、確かにいろいろすることはできないです。
ダイアログボックスで新しいフォルダを作成したいという話もあり、ダイアログ
版の新しいフォルダも作るとしたら、それと一緒にできたらいいということで、
ご意見参考にさせていただきます。

いまある方法でやるとしたら、新しいフォルダを作成して名前も決めてから、
[ファイル]→[名前の変更(複数)]→[連番/日時...]より、日時の書式などを指定
して名前を変更する方法があります。

----

参考までに、上級者向けのやり方になりますが、スクリプトを実行することでい
ろいろする方法もあります。
この一連の操作をまとめる感じでスクリプトにするとしたら、以下のような感じ
でできました。(js)

  objFso = new ActiveXObject("Scripting.FileSystemObject");
  strName="新しいフォルダ";
  cmax=1000;
  for( i = 1; i <= cmax; i ++ ) {
    strFull = GetDirectory() + "\\" + strName;
    if( !objFso.FileExists( strFull )
     && !objFso.FolderExists( strFull ) ) {
      objFso.CreateFolder( strFull  );
      break;
    }
    strName="新しいフォルダ("+i+")";
  }
  if(i<cmax){
    Refresh();
    SelectItem( strName, 2 );
    Command("名前の変更(連番/日時)");
  } else {
    Message("失敗");
  }


これを適当なフォルダに例えばC:\test\test.jsとして保存して、秀丸ファイ
ラーClassicではブックマークやツール項目の「パス」に
「js:C:\test\test.js」として登録して、そのブックマークを選ぶことでスクリ
プトを実行できます。

[ ]
RE:04895 フォルダー作成への機能追加要望No.04913
つるくし さん 14/06/25 21:58
 
お礼が遅くなり申し訳ありません。こんなに早く対応いただけるとは思っていなかっ
たので。
早速、JSスクリプトをブックマークに登録させていただきました。
思った通りの機能です。
下名も、少しずつjsスクリプトを勉強して、簡単なものは作れるようになろうと思い
ます。
ありがとうございました。

[ ]
RE:04895 便乗すみませんNo.04914
tera-km さん 14/06/26 08:20
 
こんにちは、便乗質問すみません。

名前の変更ダイアログを出すのではなく、フォルダ名を YYYYMMDD-hhmmss として
生成するにはどこを変更すればよいでしょうか?

私もほしい機能なのですが、重複無しに時系列で生成されればよいのです。
よろしくお願いいたします。

>
>  objFso = new ActiveXObject("Scripting.FileSystemObject");
>  strName="新しいフォルダ";
>  cmax=1000;
>  for( i = 1; i <= cmax; i ++ ) {
>    strFull = GetDirectory() + "\\" + strName;
>    if( !objFso.FileExists( strFull )
>     && !objFso.FolderExists( strFull ) ) {
>      objFso.CreateFolder( strFull  );
>      break;
>    }
>    strName="新しいフォルダ("+i+")";
>  }
>  if(i<cmax){
>    Refresh();
>    SelectItem( strName, 2 );
>    Command("名前の変更(連番/日時)");
>  } else {
>    Message("失敗");
>  }
>


[ ]
RE:04914 便乗すみませんNo.04915
秀丸担当 さん 14/06/26 10:23
 

名前の変更ダイアログを出さないまでになると、そこまでを含めてスクリプトで
作りこむ必要がでてきます。
書式もそのままではスクリプト化はできないので、合うように作ることになりま
す。

秀丸ファイラーだけでなく、だんだんWSHでも通用しそうなスクリプトになって
きますが、YYYYMMDD-hhmmssという書式に合うようにするとしたら、以下のよう
な感じになります。

あと、前のスクリプトでもそうですが、先頭4行のパスがあるかどうかのチェッ
クを入れたほうが良かったです。

  if( GetDirectory()=="" ){
    Message("パスがありません");
    EndMacro();
  }
  objFso = new ActiveXObject("Scripting.FileSystemObject");
  dateNow = new Date();
  strDate= "新しいフォルダ"
    +("000"+dateNow.getFullYear()).slice(-4)
    +("0"+dateNow.getMonth()).slice(-2)
    +("0"+dateNow.getDate()).slice(-2)
    +"-"
    +("0"+dateNow.getHours()).slice(-2)
    +("0"+dateNow.getMinutes()).slice(-2)
    +("0"+dateNow.getSeconds()).slice(-2)
    ;
  strName=strDate;
  cmax=1000;
  for( i = 1; i <= cmax; i ++ ) {
    strFull = GetDirectory() + "\\" + strName;
    if( !objFso.FileExists( strFull )
     && !objFso.FolderExists( strFull ) ) {
      objFso.CreateFolder( strFull  );
      break;
    }
    strName=strDate+"("+i+")";
  }
  if(i<cmax){
    Refresh();
    SelectItem( strName, 2 );
    //名前の変更状態にするとしたら…
    //Command("名前の変更");
  } else {
    Message("失敗");
  }

[ ]
RE:04915 便乗すみませんNo.04916
tera-km さん 14/06/26 13:28
 
こんにちは、

早々とありがとうございました。
おかげさまで思い通りのことができるようになりました。

[ ]
RE:04916 便乗すみませんNo.04917
秀丸担当 さん 14/06/26 13:49
 

すみません。
できたフォルダ名をよく見たら「月」が1つずれていました。
月の部分は以下のようにしたほうがよかったです。

    +("0"+(dateNow.getMonth()+1)).slice(-2)

getMonthだけはなぜか0から始まるのですね。

[ ]
RE:04917 便乗すみませんNo.04919
tera-km さん 14/06/27 08:07
 
こんにちは

下記修正確認いたしました。ありがとうございます。


>すみません。
>できたフォルダ名をよく見たら「月」が1つずれていました。
>月の部分は以下のようにしたほうがよかったです。
>
>    +("0"+(dateNow.getMonth()+1)).slice(-2)
>
>getMonthだけはなぜか0から始まるのですね。

[ ]