人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

おしえて欲しいのですが、
今、windowsにて
aaa----bbbb
|__cccc
|__dddd---eeee

などのフォルダがいくつもあり、
このなかで、ccccフォルダとeeeeフォルダの一部のファイルだけを上書きしないという条件をつけて
コピーをしたいのですが、バッチPGMを組むしか方法ないでしょうか。
なんかツールでできないでしょうか。

ご存知のかたよろしくお願いいたします。


●質問者: sinrabanshyo
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● hissssa
●0ポイント

その「上書きしたくない一部のファイル」は、具体的にどのような条件をつけて指定したいのでしょうか?また、この処理は1回だけ行うのでしょうか、それとも定期的に行うのでしょうか?。そのあたりが分からないと、適切な回答は困難かと思われます。

上書きしたくないファイルが限定されており、なおかつ1回だけ行うなら、単純に「そのファイルを一旦退避しておき、全体を上書きコピーした後に書き戻す」ようにすれば終わりかと。
あるいは、上書きしたくないファイルだけを読み取り専用属性にしてから全体コピーするという手も考えられますが。


sinrabanshyoさんのコメント
ご指摘ありがとうございます。 上書きしたくない、フォルダ(以下ファイル含む)とファイルがあります。 ファイルパスは都度かわりますので、上書きしたくないファイル、フォルダを事前設定しているのが好ましいと思っております。 osはwinがメインですが、macもありえます。 お教え頂いた読み取り専用属性にするのは都度、コピーする、フォルダ配下のファイル数が決まっておりません。言語としては、java,bat,vbaで考えていますが、フリーソフトでもokです。 言葉足らず申し訳ありません。 よろしくお願いいたします。

hissssaさんのコメント
すいませんが、そのご説明でも、具体的にどうしたいのかが全く分かりません 「上書きしたくないファイル、フォルダ」というのは、個別に一つ一つGUIで設定したいということですか? またその設定は恒久的な物ですか?それともコピーを行う度に変動するのですか? 「ファイルパスは都度かわる」というのは、コピー元とコピー先の双方が変わるのですか? と言うか、要件定義できていないようですので、要件を並べるより「どういう事情でそれをしたいのか」を具体的に説明される方が話が早いのではないかと思われますが。

sinrabanshyoさんのコメント
環境を説明すべきでした。 ご回答いただいたのに申し訳ありませんでした。 よろしくお願いいたします。

2 ● a-kuma3
●100ポイント ベストアンサー

Ant というコマンドラインベースのツールがあります。
java のビルドに使われます。
http://ant.apache.org/

色々なことができて、ファイルのコピーもその一部です。
http://www.javadrive.jp/ant/copy/index2.html
↑リファレンスよりは、ちょっと読みやすいはず。


質問の文面だとインデントが崩れてますが、ディレクトリの階層はこんな感じでしょうか。

aaa
 ├ bbbb
 ├ cccc
 └ dddd
 └ eeee

こういう構成のディレクトリから、

という場合、以下のようなビルドファイルを用意して ant を実行します。。

<?xml version="1.0" encoding="Shift_JIS"?>

<project name="my_project" default="do_copy">

 <target name="do_copy">
 <copy todir="./dest">
 <fileset dir="./aaa">
 <!-- とりあえず、全てのファイルをコピー対象 -->
 <include name="**/*" />

 <!-- そのうち、コピーしないものを個別に指定 -->
 <exclude name="cccc/**/*" />
 <exclude name="dddd/eeee/not_copy_no1.txt" />
 <exclude name="dddd/eeee/not_copy_no2.log" />
 <exclude name="dddd/eeee/*.bak" />
 </fileset>
 </copy>
 </target>

</project>

面倒そうな感じがする分、指定は細かくできます。
プログラムを書くよりは、ちょっとは楽です。
Windows でも Linux 系でも行けます。もちろん、Mac も。


対象外にする条件というのが、それほど複雑でなければ rsync とか FastCopy や robocopy という方法もあるかも。
rsync は、Windows で動かすところまでもってくのが面倒。
FastCopy や robocopy は、Windows 限定というところをどう考えるかだと思います。


sinrabanshyoさんのコメント
いつもご回答ありがとうございます。 Apacheでできるんですね。。 ありがとうございました。

a-kuma3さんのコメント
Apache のプロジェクトのひとつですが、Webサーバとして Apache を立ち上げていない環境でも、単独のツールとして使えます。 Ant は java で実装されているので、JRE (java runtime) の導入は必要ですが、java が実行できる環境であれば OS を選びません。 # ビルドファイルの表現は、多少変わるでしょうけれど。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ