• ベストアンサー

フォルダ名の一部を、テキストファイル内に、一括書き込みできますか?

テキストファイルが入ったフォルダ名に、大事なキーワードが入っており、 フォルダ名の一部、または、全部を、テキストファイル内に(先頭行にでも)書き込みたいのですが、 フォルダが千以上あるので、一括して書き込みしてくれるものが、あればなぁと思います。 例えば、フリーソフトなど、何か方法があるでしょうか? 当方は、EXCELのマクロは、初心者ですが、使えます。 また、秀丸を最近、使い始めましたが、まだ、詳しくありません。 もし何か情報があれば、お教えください。 よろしくお願いいたします。

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

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

ツールにこだわらないということなのでWSH-VBSでやった。以下がそのスクリプト。表示の都合で先頭に全角空白が入っています。コピーして使用する場合は、全角空白1個を半角空白2個に置換してください。 ==== addstring.vbs ここから ==== option explicit CONST EXT = "txt" CONST SEP = "■" ' ディレクトリtargetのテキストファイルの先頭に文字列を追加する. sub addstring(target)  dim file, stream, src, addstr, subdir  for each file in target.files   if fso.getextensionname(file.name) = EXT then    fso.copyfile file.path, file.path & ".bak" ' 念のためにバックアップ    ' 追加する文字列    addstr = SEP & split(file.parentfolder.name, SEP,3)(2)    ' 確認用の表示(なくてもかまわない)    ws.echo file.path & " の先頭に '" & addstr & "' を追加します."    ' 元のファイルの内容を取得    set stream = file.openastextstream(1)    src = stream.readall    stream.close    ' 文字列を追加してファイルに書き込む    set stream = file.openastextstream(2)    stream.write addstr & vbcrlf & src    stream.close   end if   set stream = nothing  next  ' サブディレクトリがあれば再帰処理  for each subdir in target.subfolders   addstring subdir  next end sub dim ws, args, fso, scandir set ws = WScript set args = ws.arguments ' 引数が与えられなかったときは終了 if args.count = 0 then  ws.echo "使い方: cscript adddirname.vbs scandir"  ws.quit end if set fso = createobject("Scripting.FileSystemObject") set scandir = fso.getfolder(args(0)) addstring scandir ==== addstring.vbs ここまで ==== コマンドプロンプトで次のように実行します。  cscript addstring.vbs scandir scandirはテキストファイルが存在するディレクトリです。サブディレクトリがあればそれ以下のファイルも処理します。以下の例ではc:\hogeを指定してあげれば1.txt~5.txtをすべて処理します。  C:\  └─hoge    ├─01234■500円・山田 花子■090726定 商品■    │   1.txt    │   2.txt    │    └─01235■1800円・佐藤 さとる■090727代引 商品■        3.txt        4.txt        5.txt 親ディレクトリ名にsep(今回は'■')が2個以上含まれない場合はエラーになります。したがってc:\hogeにpiyo.txtというファイルがあった場合、親ディレクトリの名前は'hoge'なのでエラーになります。 希望どおりかわからないので、一部のテキストファイルをテスト用のディレクトリにコピーしてテストしてください。最低限の仕様で作ったのでエラーが出るかもしれません。その場合はエラー状況を書いてまた補足してください。

aaaa0001
質問者

お礼

現在のディレクトリにプログラムを置いて、起動したところ、 見事にできました! すべてのテキストファイルの先頭に、フォルダ名の一部が追加されています。 すごいです! 私のために、わざわざ、素晴らしいプログラムを作ってくださって、 本当にありがとうございました!

aaaa0001
質問者

補足

わざわざプログラムを作ってくださったなんて、 本当にありがとうございます! Dドライブの直下に、 ・テキストファイルが入ったフォルダ (フォルダ名:test_200907)と ・addstring.vbs を置いた場合、 コマンドプロンプトで d:\cscript addstring.vbs d:\test_200907 と入力するのかなと思ったのですが、 'd:\cscript'は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 というエラーになってしまいました。 何か、プログラムを動かすソフトウエアを購入して、 インストールすることが、必要なのでしょうか? 作っていただいたプログラムを、テキストファイルに入力して、 「全角スペース」を「半角スペース2個」に置換して 「addstring.vbs」という名前で保存するだけでは、だめだったのでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (5)

noname#223623
noname#223623
回答No.6

> コマンドプロンプトで > d:\cscript addstring.vbs d:\test_200907 > と入力するのかなと思ったのですが、 > > 'd:\cscript'は、内部コマンドまたは外部コマンド、 > 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 cscriptの本体(というのかな)はcscript.exeです。Win2kだと'c:\winnt\system32'にありました。Vistaは持ってないのでわかりませんが、'C:\windows\system32'かな。 ということで'cscript'の前の'd:\'は不要です。これだとcscript.exeがD:\にあるということになりますから。試しにコマンドプロンプトを開いて、'cscript'とだけ入力してみてください。WSHのバージョンが表示されたら使えるようにはなってます。特にインストールするものはありません。 バージョンが確認できたら、もう一度  cscript addstring.vbs d:\test_200907 と実行してみてください。今度はできると思います。 それでもうまくいかなかったらまた補足してください。

aaaa0001
質問者

お礼

現在のディレクトリにプログラムを置いて、起動したところ、 見事にできました! すべてのテキストファイルの先頭に、フォルダ名の一部が追加されています。 すごいです! 私のために、わざわざ、素晴らしいプログラムを作ってくださって、 本当にありがとうございました!

すると、全ての回答が全文表示されます。
回答No.4

「Greplace」テキスト一括検索・置換ソフト http://www.vector.co.jp/vpack/browse/pickup/pw5/pw005490.html 単純なテキストの検索・置換以外に「カスタム置換」という機能が付いています。 これは、メディア情報(ファイル名や、作成日時、ファイルのパスなど)を置換対照として含めることが出来るという機能です。 このソフトの検索・置換で「正規表現を使う」設定にすると 置換文のメニューの中に「ファイル情報 > 親ディレクトリのパス」とういのが出てきます。 (親ディレクトリ=親フォルダです) これで親フォルダ名とそのパスをテキスト先頭に一括して書き込むことが出来ます。 端折った書き方ですが、操作のポイントだけを書いてみます。 (1) 詳細オプションで「正規表現を使う」、対象として「中身」を指定。 (2) 検索文の入力、右の三角をクリックして出てくるメニューから「ゼロ幅表明 > 文頭 \A」を選んで入力。 (3) 置換文の入力、右の三角をクリックして出てくるメニューから「ファイル情報 > 親ディレクトリのパス ${file:parent-path}」を選んで入力。 ここで文頭にいれた親ディレクトリのパスでいったん改行したいときは末尾に \n(改行)を足してください。 ${file:parent-path}\n 試してみてください。私のテストでは成功しました。 念のため、バックアップをとってから処理するようにしてください。 フォルダ名以外のパス部分が邪魔な場合は、一括置換で消してしまえばいいと思います。 そうすれば親フォルダ名だけが一行目に残ることになります。

aaaa0001
質問者

お礼

ご回答いただき、ありがとうございます。 正に、やりたいことができるソフトのようで、「これは!」と思ったのですが、 残念ながら、Vistaに対応していないようで、起動できませんでした。 残念です…。 貴重な情報を教えていただきまして、ありがとうございました。

すると、全ての回答が全文表示されます。
noname#223623
noname#223623
回答No.3

できそうな気はする。だけど不明な点があるので具体的なことが書けない。以下の点について補足するべきだと思う。 > フォルダ名の一部、または、全部を、 一部でも全部でもどちらでもいいのか。または、一部の場合と全部の場合があるのか。一部を取り出す場合、そのルールは?具体的なサンプルがあるといいですね。 > テキストファイル内に(先頭行にでも)書き込みたいのですが、 先頭行がいいんですか?末尾でもかまわない? > 例えば、フリーソフトなど、何か方法があるでしょうか? > > 当方は、EXCELのマクロは、初心者ですが、使えます。 > また、秀丸を最近、使い始めましたが、まだ、詳しくありません。 ということなので、ツールには特にこだわらないということですね? 以上の補足をお願いします。

aaaa0001
質問者

補足

■ > > フォルダ名の一部、または、全部を、 > 一部でも全部でもどちらでもいいのか。 > または、一部の場合と全部の場合があるのか。 > 一部を取り出す場合、そのルールは? > 具体的なサンプルがあるといいですね。 フォルダ名の全部でもOKです。 一部が可能なら、もっとありがたいです。 フォルダ名は 01234■500円・山田 花子■090726定 商品■ 01235■1800円・佐藤 さとる■090727代引 商品■ などのようになっており、 ■090726定 商品■ ■090727代引 商品■ の部分 (フォルダ名の2個目の■から末尾まで) がテキストファイルに書けると、一番助かるのですが…。 ■ > > テキストファイル内に(先頭行にでも)書き込みたいのですが、 > 先頭行がいいんですか?末尾でもかまわない? 末尾で問題ありません。 ■ > ツールには特にこだわらないということですね? ツールにはこだわりません。 ■ もし、何か方法がありましたら、ぜひ、お教えください。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。
  • violet430
  • ベストアンサー率36% (27472/75001)
回答No.2

フォルダ名の一覧を出力するツールです http://www.vector.co.jp/soft/winnt/util/se325080.html

aaaa0001
質問者

お礼

ご回答いただき、ありがとうございます。 今回は、千個ぐらいのフォルダがあり、 各フォルダに1~5個程度のテキストファイルがあり、 各テキストファイルの中のどこかに、フォルダ名を記入したかったのですが、 便利そうなソフトを教えていただき、ありがたいです。 早速インストールしました。 教えていただきまして、ありがとうございました!

すると、全ての回答が全文表示されます。
  • pentium100
  • ベストアンサー率45% (689/1517)
回答No.1

ひとつのテキストファイルにフォルダのリストをまとめて記入したたいのですか? それともフォルダ一つ一つにちがうテキストファイルがあって その先頭行に1個1個書き込んでいくのでしょうか? 前者であればかんたんです。 コマンドプロンプトでDIRコマンドというのがあります。 コマンドプロンプトはXPではプログラムのアクセサリに入っています。 指定の場所のフォルダ・ファイル一覧をずらずらっと表示してくれます。 後は結果をコピーして貼り付けるだけ。 たとえばC:\の一覧を表示させたければ CD C:\ と打ち込んでEnterキーを押すと、対象となるフォルダがC:\に変更されます。 ここで DIR と打ち込めば、C:\の内容が一覧表示されます。 右クリックすればすべて選択できますので、コピーしてメモ帳に貼り付けてください。

aaaa0001
質問者

お礼

ご回答いただき、ありがとうございます。 今回は、千個ぐらいのフォルダがあり、 各フォルダに1~5個程度のテキストファイルがあり、 各テキストファイルの中のどこかに、フォルダ名を記入したかったのですが、 C:\の内容をリストアップする、そんな方法があったと知り、勉強になりました。 コマンドプロンプトは、ほとんど使ったことがなかったです。 教えていただきまして、ありがとうございました!

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう