• ベストアンサー

ファィル名と同じ名前のフォルダを作りたい

ファィル名と同じ名前のフォルダを簡単に作りたいのですが、適当なツールがありましたら紹介してください。 たとえばテキストファイルを右クリックして「その名前のフォルダをここにあるいは指定場所作成」というようなことができるといいのですが。 今はファィル名をクリップボードに入れて、右クリックから新規フォルダを作成し、名前をクリップボードから張り付けることをしています。 「拡張COPY」というフリーソフトにそのコマンドはあるのですが多機能過ぎていて、その都度「その名前のフォルダ作成」のメニューを探す必要があるのでワンクリックでできないものかと… WindowsXP SP2で使用しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

ドライブ/フォルダの指定は BrowseForFolder の第 4パラメータで。 たとえば D: ドライブのルートにするなら… folder = app.BrowseForFolder(0, "フォルダ作成場所を選択してください.", 0, "D:"); D:\somewhere フォルダなら… folder = app.BrowseForFolder(0, "フォルダ作成場所を選択してください.", 0, "D:\\somewhere"); パスの区切り文字は \ ではなく \\ となるので注意。 ~~~ ちなみに、ドライブ/フォルダを指定すると、それより上位のフォルダは選択できなくなる。 これは BrowseForFolder の仕様なので…悪しからず。

noro6857
質問者

お礼

重ね重ねありがとうございました。 プログラムを作れることがうらやましいです。 私も少しは勉強しないと。

その他の回答 (4)

回答No.4

複数ファイル対応 "指定場所に作成" バージョン。 (不具合等があっても返信は年明けになると思うので、ご勘弁を) // makefolder4.js fs = new ActiveXObject("Scripting.FileSystemObject"); app = new ActiveXObject("Shell.Application"); args = WScript.Arguments; folder = app.BrowseForFolder(0, "フォルダ作成場所を選択してください.", 0); if (! folder) WScript.Quit(0); path = folder.Items().Item().Path.replace(/\\$/, ""); for (i = 0; i < args.Count(); i++) { basename = fs.GetBaseName(args(i)); target = path + "\\" + basename; if (fs.FileExists(target) || fs.FolderExists(target)) WScript.Echo(target + "\n同名のファイル/フォルダがあります. 作成できません."); else fs.CreateFolder(target); }

noro6857
質問者

お礼

これも問題なく動作しました。 指定フォルダを開いたときに、初期場所がマイコンピュータでなく、デフォルトで特定のドライブにすることってできますか。

noro6857
質問者

補足

なお、すぐ書き込んでいただいたのにお礼が遅れてすみませんでした。 書き込まれたときはいつもOKWAVからMAILが届くのですが、今回は届かず気がつきませんでした。

回答No.3

複数ファイル対応バージョン。(最後の行の } を忘れずに) // makefolder3.js fs = new ActiveXObject("Scripting.FileSystemObject"); args = WScript.Arguments; for (i = 0; i < args.Count(); i++) { basename = fs.GetBaseName(args(i)); path = fs.GetParentFolderName(args(i)).replace(/\\$/, ""); target = path + "\\" + basename; if (fs.FileExists(target) || fs.FolderExists(target)) WScript.Echo(target + "\n同名のファイル/フォルダがあります. 作成できません."); else fs.CreateFolder(target); } ~~~ これの "指定場所に作成" バージョンも必要?

noro6857
質問者

お礼

おお!できました! 感謝感激です。 これで作業がとても楽になりました。 send toに入れて早速愛用しています。 ついでに今これをショートカットにできるかどうか割り当ててやっているんですがこれは無理なようでした。 右クリックの送るで十分なので使わせてもらうことにします。 ほんとうにありがとうございました。

回答No.2

Windows 標準機能 (WSH) を利用した方法。 // makefolder.js fs = new ActiveXObject("Scripting.FileSystemObject"); arg = WScript.Arguments(0); basename = fs.GetBaseName(arg); path = fs.GetParentFolderName(arg).replace(/\\$/, ""); target = path + "\\" + basename; if (fs.FileExists(target) || fs.FolderExists(target)) WScript.Echo(target + "\n同名のファイル/フォルダがあります. 作成できません."); else fs.CreateFolder(target); 上の 10行をメモ帳へコピー&ペースト。 ファイル名を makefolder.js として適当な場所へ保存。 makefolder.js のアイコンへ任意のファイルをドラッグ&ドロップ。 右クリックメニューから使うには… SendTo フォルダ内に makefolder.js へのショートカットを作成。 ショートカット名を "その名前のフォルダをここに作成" などと変更。 ファイルを右クリック - [送る] - [その名前のフォルダをここに作成] ~~~ "指定場所に作成" バージョン。 // makefolder2.js fs = new ActiveXObject("Scripting.FileSystemObject"); app = new ActiveXObject("Shell.Application"); arg = WScript.Arguments(0); basename = fs.GetBaseName(arg); folder = app.BrowseForFolder(0, "フォルダ作成場所を選択してください.", 0); if (! folder) WScript.Quit(0); path = folder.Items().Item().Path.replace(/\\$/, ""); target = path + "\\" + basename; if (fs.FileExists(target) || fs.FolderExists(target)) WScript.Echo(target + "\n同名のファイル/フォルダがあります. 作成できません."); else fs.CreateFolder(target);

参考URL:
http://www.microsoft.com/japan/msdn/scripting/
noro6857
質問者

お礼

ありがとうございます。 早速作ってみてうまくできました。これなら使えます! ただ、複数のファィルから複数のフォルダを一度に作りたいときが多いのですが、これたせとひとつだけしか作れなかったので、これは可能でしょうか?

回答No.1

自分のHPって、書いちゃダメなんだっけ? http://honobono.s19.xrea.com/delphi/03.php ドロップされたファイルのフォルダを作るソフトです。w じゃっかん不完全だけど、自分で作ったツールです。

noro6857
質問者

お礼

ありがとうございます。 こんなのがほしかったので使ってみたいです。 ただ、DL先がリンク切れですので教えてください。