ファイル名からフォルダに振り分けるソース

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
cotton618
記事: 8
登録日時: 10年前

ファイル名からフォルダに振り分けるソース

#1

投稿記事 by cotton618 » 10年前

ファイル名を参照し、指定されたものだけフォルダに振り分けることのできるようなソースはないでしょうか?
そのようなフリーソフトはいくつか見つけたのですが、ソースが欲しいです。

beatle
記事: 1281
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: ファイル名からフォルダに振り分けるソース

#2

投稿記事 by beatle » 10年前

C言語標準ライブラリの rename 関数を使えばファイルの移動ができます。
C言語 ファイル名 フォルダ名の変更と移動 - stdio.h - [ rename ]

cotton618
記事: 8
登録日時: 10年前

Re: ファイル名からフォルダに振り分けるソース

#3

投稿記事 by cotton618 » 10年前

ありがとうございます。
こちらを利用してみます。
ファイル名の頭の文字や末尾の文字からフォルダに分ける場合にはどのようにしたらよいでしょうか?
たとえば
gazou001.png
gazou002.png
・・・
gazou011.png
gazou012.png
・・・
gazou098.png
gazou099.png
と、001から099まで存在し、gazou0X1.pngのものはgazou0X1フォルダに入れる、などとしたい場合にはどのようなソースを書けばよいのでしょうか?

beatle
記事: 1281
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: ファイル名からフォルダに振り分けるソース

#4

投稿記事 by beatle » 10年前

例えばhoge.txtをdir\hoge.txtに移動したい場合は下記のコードです

コード:

rename("hoge.txt", "dir\\hoge.txt");

アバター
へろりくしょん
記事: 92
登録日時: 13年前
住所: 福岡

Re: ファイル名からフォルダに振り分けるソース

#5

投稿記事 by へろりくしょん » 10年前

任意のディレクトリ等からファイルを検索し、見つかったファイルのファイル名から、振り分けたい。
と言う事だと思いますが。


環境が何も書いてないので、C言語だと仮定しますが、
C言語の標準的な機能のみでは不可能です。

まずは環境を書いてください。

cotton618
記事: 8
登録日時: 10年前

Re: ファイル名からフォルダに振り分けるソース

#6

投稿記事 by cotton618 » 10年前

すみません、C++言語で行っています。
ファイル自体を移動させたいのではなく、ファイル名だけを書き写したい…という表現のほうが適切かと思います。

ファイル名の羅列されているtxtの中から、欲しいファイル名のみピックアップし別のtxtに一覧として書き出す。
というようなことです。

gazou.txt
=========
gazou001.png
gazou002.png
gazou003.png
gazou004.png
gazou005.png

gazou096.png
gazou097.png
gazou098.png
gazou099.png

という画像の名前が一覧で書かれたファイルがあった場合に、
gazou0X1.pngのみ、つまり
gazou001.png
gazou011.png
gazou021.png
gazou031.png
gazou041.png
gazou051.png
gazou061.png
gazou071.png
gazou081.png
gazou091.png

を別のファイル(gazou0X1.txt)に書き出すようにしたいと思っています。

beatle
記事: 1281
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: ファイル名からフォルダに振り分けるソース

#7

投稿記事 by beatle » 10年前

なるほど、そういうことですか。
ファイルを振り分けると聞くと、ファイルを実際に移動したいのだと思ってしまいます。

cotton618さんがやりたいのは単なる文字列の処理ということで良いですね?
実際のファイルが関係するのは、ファイル名一覧を記録したgazou.txtと書き出すファイルgazou0X1.txtのみで、後は単なる文字列の操作だけですね?

それなら
  • gazou.txtから1行ずつ読み込んで(fscanfなり、fgetsなりを使えばいいでしょう)
  • 数字の部分で処理を分けて(if文でいけると思います)
  • gazou0X1.txtに書き出す
という手順でどうでしょう。

「gazou001.png」の中で「gazou」の部分は固定なのかどうか、「001」の部分の桁数は固定されているのかなどで難易度は変わると思いますが、基本的には上記の流れでいけると思います。
具体的にどの部分の処理が分からない、など有りましたらご質問ください。
課題の丸投げは禁止の掲示板ですから、cotton618さんが出来る所までご自分で頑張ってください。

閉鎖

“C言語何でも質問掲示板” へ戻る