
テキストファイルが入ったフォルダ名に、大事なキーワードが入っており、
フォルダ名の一部、または、全部を、テキストファイル内に(先頭行にでも)書き込みたいのですが、
フォルダが千以上あるので、一括して書き込みしてくれるものが、あればなぁと思います。
例えば、フリーソフトなど、何か方法があるでしょうか?
当方は、EXCELのマクロは、初心者ですが、使えます。
また、秀丸を最近、使い始めましたが、まだ、詳しくありません。
もし何か情報があれば、お教えください。
よろしくお願いいたします。
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'なのでエラーになります。
希望どおりかわからないので、一部のテキストファイルをテスト用のディレクトリにコピーしてテストしてください。最低限の仕様で作ったのでエラーが出るかもしれません。その場合はエラー状況を書いてまた補足してください。
この回答への補足
わざわざプログラムを作ってくださったなんて、
本当にありがとうございます!
Dドライブの直下に、
・テキストファイルが入ったフォルダ (フォルダ名:test_200907)と
・addstring.vbs
を置いた場合、
コマンドプロンプトで
d:\cscript addstring.vbs d:\test_200907
と入力するのかなと思ったのですが、
'd:\cscript'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
というエラーになってしまいました。
何か、プログラムを動かすソフトウエアを購入して、
インストールすることが、必要なのでしょうか?
作っていただいたプログラムを、テキストファイルに入力して、
「全角スペース」を「半角スペース2個」に置換して
「addstring.vbs」という名前で保存するだけでは、だめだったのでしょうか?
現在のディレクトリにプログラムを置いて、起動したところ、
見事にできました!
すべてのテキストファイルの先頭に、フォルダ名の一部が追加されています。
すごいです!
私のために、わざわざ、素晴らしいプログラムを作ってくださって、
本当にありがとうございました!
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
と実行してみてください。今度はできると思います。
それでもうまくいかなかったらまた補足してください。
現在のディレクトリにプログラムを置いて、起動したところ、
見事にできました!
すべてのテキストファイルの先頭に、フォルダ名の一部が追加されています。
すごいです!
私のために、わざわざ、素晴らしいプログラムを作ってくださって、
本当にありがとうございました!
No.4
- 回答日時:
「Greplace」テキスト一括検索・置換ソフト
http://www.vector.co.jp/vpack/browse/pickup/pw5/ …
単純なテキストの検索・置換以外に「カスタム置換」という機能が付いています。
これは、メディア情報(ファイル名や、作成日時、ファイルのパスなど)を置換対照として含めることが出来るという機能です。
このソフトの検索・置換で「正規表現を使う」設定にすると
置換文のメニューの中に「ファイル情報 > 親ディレクトリのパス」とういのが出てきます。
(親ディレクトリ=親フォルダです)
これで親フォルダ名とそのパスをテキスト先頭に一括して書き込むことが出来ます。
端折った書き方ですが、操作のポイントだけを書いてみます。
(1)詳細オプションで「正規表現を使う」、対象として「中身」を指定。
(2)検索文の入力、右の三角をクリックして出てくるメニューから「ゼロ幅表明 > 文頭 \A」を選んで入力。
(3)置換文の入力、右の三角をクリックして出てくるメニューから「ファイル情報 > 親ディレクトリのパス ${file:parent-path}」を選んで入力。
ここで文頭にいれた親ディレクトリのパスでいったん改行したいときは末尾に \n(改行)を足してください。
${file:parent-path}\n
試してみてください。私のテストでは成功しました。
念のため、バックアップをとってから処理するようにしてください。
フォルダ名以外のパス部分が邪魔な場合は、一括置換で消してしまえばいいと思います。
そうすれば親フォルダ名だけが一行目に残ることになります。
ご回答いただき、ありがとうございます。
正に、やりたいことができるソフトのようで、「これは!」と思ったのですが、
残念ながら、Vistaに対応していないようで、起動できませんでした。
残念です…。
貴重な情報を教えていただきまして、ありがとうございました。
No.3
- 回答日時:
できそうな気はする。
だけど不明な点があるので具体的なことが書けない。以下の点について補足するべきだと思う。> フォルダ名の一部、または、全部を、
一部でも全部でもどちらでもいいのか。または、一部の場合と全部の場合があるのか。一部を取り出す場合、そのルールは?具体的なサンプルがあるといいですね。
> テキストファイル内に(先頭行にでも)書き込みたいのですが、
先頭行がいいんですか?末尾でもかまわない?
> 例えば、フリーソフトなど、何か方法があるでしょうか?
>
> 当方は、EXCELのマクロは、初心者ですが、使えます。
> また、秀丸を最近、使い始めましたが、まだ、詳しくありません。
ということなので、ツールには特にこだわらないということですね?
以上の補足をお願いします。
この回答への補足
■
> > フォルダ名の一部、または、全部を、
> 一部でも全部でもどちらでもいいのか。
> または、一部の場合と全部の場合があるのか。
> 一部を取り出す場合、そのルールは?
> 具体的なサンプルがあるといいですね。
フォルダ名の全部でもOKです。
一部が可能なら、もっとありがたいです。
フォルダ名は
01234■500円・山田 花子■090726定 商品■
01235■1800円・佐藤 さとる■090727代引 商品■
などのようになっており、
■090726定 商品■
■090727代引 商品■
の部分
(フォルダ名の2個目の■から末尾まで)
がテキストファイルに書けると、一番助かるのですが…。
■
> > テキストファイル内に(先頭行にでも)書き込みたいのですが、
> 先頭行がいいんですか?末尾でもかまわない?
末尾で問題ありません。
■
> ツールには特にこだわらないということですね?
ツールにはこだわりません。
■
もし、何か方法がありましたら、ぜひ、お教えください。
よろしくお願いいたします。
No.2
- 回答日時:
ご回答いただき、ありがとうございます。
今回は、千個ぐらいのフォルダがあり、
各フォルダに1~5個程度のテキストファイルがあり、
各テキストファイルの中のどこかに、フォルダ名を記入したかったのですが、
便利そうなソフトを教えていただき、ありがたいです。
早速インストールしました。
教えていただきまして、ありがとうございました!
No.1
- 回答日時:
ひとつのテキストファイルにフォルダのリストをまとめて記入したたいのですか?
それともフォルダ一つ一つにちがうテキストファイルがあって
その先頭行に1個1個書き込んでいくのでしょうか?
前者であればかんたんです。
コマンドプロンプトでDIRコマンドというのがあります。
コマンドプロンプトはXPではプログラムのアクセサリに入っています。
指定の場所のフォルダ・ファイル一覧をずらずらっと表示してくれます。
後は結果をコピーして貼り付けるだけ。
たとえばC:\の一覧を表示させたければ
CD C:\
と打ち込んでEnterキーを押すと、対象となるフォルダがC:\に変更されます。
ここで
DIR
と打ち込めば、C:\の内容が一覧表示されます。
右クリックすればすべて選択できますので、コピーしてメモ帳に貼り付けてください。
ご回答いただき、ありがとうございます。
今回は、千個ぐらいのフォルダがあり、
各フォルダに1~5個程度のテキストファイルがあり、
各テキストファイルの中のどこかに、フォルダ名を記入したかったのですが、
C:\の内容をリストアップする、そんな方法があったと知り、勉強になりました。
コマンドプロンプトは、ほとんど使ったことがなかったです。
教えていただきまして、ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/15 16:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- 画像編集・動画編集・音楽編集 画像の一括圧縮 1 2022/12/02 21:56
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PCファックスの送り方(マル...
-
PerlをWinで使いたい。
-
マクロでメモ帳に貼り付け
-
フォルダ名の一部を、テキスト...
-
Flashの外部ファイル読み込みに...
-
Dreamweaverに拡張子を設定する...
-
C言語を使用し、同じ内容のファ...
-
こういうソフトを探しています
-
多数のテキストファイルを一度...
-
フォルダ名一括変更ツール
-
photoshopをjavascriptで自動処理
-
エクセルのマクロでテキストフ...
-
一気にずばっと複数のメールを...
-
複数のテキストの末尾に文字列...
-
秀丸で単語をカウント
-
テキスト形式のファイルの編集...
-
E-taxにて確定申告をおこないま...
-
EXCEL 2003のVBAでテキストファ...
-
フリーソフトPrimoPDF...
-
仕事で使うエクセルのマクロソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelでdatファイルを作成??
-
複数のテキストファイルをexcel...
-
バッチファイルが作成できない
-
テキストファイルの文字色に色...
-
複数のファイルを同時検索し、...
-
batファイル処理でのテキストフ...
-
一気にずばっと複数のメールを...
-
ファイル名の特定文字だけ削除...
-
ExcelVBA テキストファイルから...
-
複数のテキストファイルをexcel...
-
【エクセルVBA】エクセルからテ...
-
インデザインのテキスト流し込み
-
マクロでメモ帳に貼り付け
-
CDの曲名をテキストファイルで...
-
複数のテキストファイル(拡張...
-
文字の頭文字順に自動移動
-
テキストファイルを開かずに中...
-
Excelマクロ/ファイル名を指定...
-
VBSでテキストファイルのタブ区...
-
*.txtファイルがHotSyncできない
おすすめ情報