[前の記事]« [2000,NT]ファイルの中身があるか(サイズが0でないか)を確認するには
[次の記事][2000]ユーザ名、パスワードが異なる多数のクライアントPCにファイルをコピーするには »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「DEL,ERASE,REN…ファイル削除/復活/移動/名前の変更」索引へ

[NT系]複数のディレクトリを一度に移動させたい

844) サブディレクトリを移動するコマンド らり 2003/11/10(月) 22:34


WindowsXPのコマンドプロンプトを使っているのですが、複数のサブディレクトリをファイルのmove ~*と同じように一度に移動させようとすると、構文が間違っています、と表示されます。何かいい方法ありませんか。

850) Re:サブディレクトリを移動するコマンド ふぇむ 2003/11/12(水) 15:00


>WindowsXPのコマンドプロンプトを使っているのですが、複数のサブディレクトリをファイルのmove ~*と同じように一度に移動させようとすると、構文が間違っています、と表示されます。何かいい方法ありませんか。

moveコマンドではそれはできなさそうですね。
手間なくやるには、XCOPY して成功したら元を消す、しかないような気が(実際何のツールを使っても実質はそういうことをやってるはずと思う)。Explorer上でマウスでやるなら簡単なんですけどね(これもコピーして元を消すとやっていると思う)。






870) Re:サブディレクトリを移動するコマンド Hellcat 2003/11/14(金) 23:05


>WindowsXPのコマンドプロンプトを使っているのですが、複数のサブディレクトリをファイルのmove ~*と同じように一度に移動させようとすると、構文が間違っています、と表示されます。何かいい方法ありませんか。

サブディレクトリーを有する複数のディレクトリーを一括して移動する場合
Unix like toolのmvコマンドで実現できるかもしれません。
とりあえず、手許にWinXPがないのでMS-DOS用のmvコマンドでテストしたところではOKでした。

WinXP用のmvコマンドは
 http://www.piedey.co.jp/softs/ntuxtl.html
にありますので、トライしてみてらどうでしょうか。

例えば、以下のようなディレクトリー構造で
E:\
├─ABC
│ ├─01HOGE
│ │ └─HOGE_1
│ ├─02HOGE
│ │  └─HOGE_2
│ ├─03HOGE
│ │  └─HOGE_3
│ ├─HEMO
│ ├─FOO
│ └─BAZ
└─XYZ

ABCディレクトリー配下の先頭の2文字が数値のHOGEディレクトリー
01HOGE
02HOGE
03HOGE
をワイルドカードを使ってE:\XYZディレクトリー配下へ移動する場合

mv E:\ABC\[0-9][0-9]HOGE E:\XYZ

とします。

結果は以下の通りとなります。
E:\
├─ABC
│ ├─HEMO
│ ├─FOO
│ └─BAZ
└─XYZ
  ├─01HOGE
  │ └─HOGE_1
  ├─02HOGE
  │ └─HOGE_2
  └─03HOGE
    └─HOGE_3

P.S.
mv -v E:\ABC\[0-9][0-9]HOGE* E:\XYZ
と-v スイッチを指定して実行状況を見ると
mkdirコマンドとrmdirコマンドを組み合わせて実現していることが分かります。



871) Re2:サブディレクトリを移動するコマンド ふぇむ 2003/11/15(土) 00:00


>サブディレクトリーを有する複数のディレクトリーを一括して移動する場合
>Unix like toolのmvコマンドで実現できるかもしれません。
>とりあえず、手許にWinXPがないのでMS-DOS用のmvコマンドでテストしたところではOKでした。

UNIX の mv コマンドの実装って、同一パーティション内なら mv 先を link し元を unlink するだけで実態の移動を伴いませんが、別パーティションならコピーして元を消す、のではなかったでしたっけか。(ファイルシステムによって違うかもですが)



873) Re3:サブディレクトリを移動するコマンド Hellcat 2003/11/15(土) 18:19


ディレクトリーの移動ツールについて改めてアップします。
WinXPは手許にないため、Win95でテストを行いました。
使用したツールはUnix like toolのmvコマンドです。
これはUXTL412F.TARに含まれているもので
http://www.asahi-net.or.jp/~bi3t-aoym/nidetool.htm
を参考にダウンロードし、テストしたものです。

このコマンドを使用するとディレクトリーの一括移動が可能です。

WinXP用のコマンドとしては
http://www.piedey.co.jp/softs/ntuxtl.html
にあるmvコマンドが使えるのではないかと思われます。

ここで言い訳(^^;;
#870(私の発言)のmvコマンドはUnix like toolではありませんでした。
同名のコマンドが複数あったため、混同してしまいました。

<テスト結果>
で、例えば次の様なディレクトリーがあったとします。
D:\
|---ABC             ( Dir ) 3/11/15 15:23:12
|  |---BAZ           ( Dir ) 3/11/15 15:23:12
|  |  |---HOGE        ( Dir ) 3/11/15 15:23:12
|  |  |  |---01HOGE    ( Dir ) 3/11/15 15:23:12
|  |  |  |---02HOGE    ( Dir ) 3/11/15 15:23:12
|  |  |  |---HEMO     ( Dir ) 3/11/15 15:23:12
|     |  |---FOO      ( Dir ) 3/11/15 15:23:12
|---XYZ             ( Dir ) 3/11/15 15:23:12

(その1)
 これを mv /abc /xyz
 とするとABCディレクトリー以下のディレクトリーがXYZの配下に移動します。
D:\
|---XYZ             ( Dir ) 3/11/15 15:23:12
|  |---ABC           ( Dir ) 3/11/15 15:23:12
|  |  |---BAZ        ( Dir ) 3/11/15 15:23:12
|  |  |  |---HOGE     ( Dir ) 3/11/15 15:23:12
|  |  |  |  |---01HOGE  ( Dir ) 3/11/15 15:23:12
|  |  |  |  |---02HOGE  ( Dir ) 3/11/15 15:23:12
|  |  |  |  |---HEMO   ( Dir ) 3/11/15 15:23:12
|  |  |  |  |---FOO   ( Dir ) 3/11/15 15:23:12

(その2)
 次に mv /abc/baz /xyz
 とするとBAZディレクトリー以下のディレクトリーがXYZの配下に移動し、ABCディレクトリーは残されます。
D:\
|---ABC             ( Dir ) 3/11/15 15:27:58
|---XYZ             ( Dir ) 3/11/15 15:27:58
|  |---BAZ           ( Dir ) 3/11/15 15:27:58
|  |  |---HOGE        ( Dir ) 3/11/15 15:27:58
|  |  |  |---01HOGE    ( Dir ) 3/11/15 15:27:58
|  |  |  |---02HOGE    ( Dir ) 3/11/15 15:27:58
|  |  |  |---HEMO     ( Dir ) 3/11/15 15:27:58
|  |  |  |---FOO      ( Dir ) 3/11/15 15:27:58

(その3)
 次に mv /abc/*/*/0[12]* /xyz
 とすると、以下のようになりました。ディレクトリーに対するワイルドカードの展開も可能なようです。
D:\
|---ABC             ( Dir ) 3/11/15 15:35:06
|  |---BAZ           ( Dir ) 3/11/15 15:35:06
|  |  |---HOGE        ( Dir ) 3/11/15 15:35:06
|  |  |  |---HEMO     ( Dir ) 3/11/15 15:35:06
|     |  |---FOO      ( Dir ) 3/11/15 15:35:06
|---XYZ             ( Dir ) 3/11/15 15:35:06
|  |---01HOGE         ( Dir ) 3/11/15 15:35:06
|  |---02HOGE         ( Dir ) 3/11/15 15:35:06

長文失礼しました。


874) Re4:サブディレクトリを移動するコマンド Hellcat 2003/11/15(土) 18:26


#873で御紹介したmvコマンドのマニュアルの一部を参考までに転記しておきます。

>LFNサポート状況下では特例として、引数が2個であってかつ2つの引数が
>同じ実体(通常ファイルあるいはディレクトリ)を表していれば、常に書
>式(1)と見なされて名前の変更ができる。これは、ファイル名の大文字小
>文字の付け替えに使える。例えばディレクトリAbCがあるとき、
> mv AbC aBc
>でそのディレクトリの名前をaBcに変更できる。

>移動する場合、元のファイルの更新時刻は保存される。LFNサポート状況
>下では最終アクセス日付も保存される(この振る舞いはUNIXに揃えてある)。

>移動元と移動先は違うドライブにあってもよい。その場合には実際には
>ファイルをコピーした後、元のファイルを削除することで移動を行う。
>また、移動対象ファイルがディレクトリであった場合には、ディレクト
>リ下のファイル構造を保存したまま全ファイルを移動する。


876) Re5:サブディレクトリを移動するコマンド ふぇむ 2003/11/16(日) 02:20


>>例えばディレクトリAbCがあるとき、
>> mv AbC aBc
>>でそのディレクトリの名前をaBcに変更できる。

ちょっと脱線かもしれませんが。
UNIX の mv で困るのは、ディレクトリの名前をリネームするのに使おうとしたとき、たとえば source という名前のディレクトリを target という名前に変更しようとして

mv source target

とした場合、target がなければ所望の通り名前が変わるんですが、もしも target という名前のディレクトが存在すると、リネームではなく丸ごとその下に移動してしまうということ、があります。

「target という名前のディレクトリはないはず」という思い込みで作ったジョブを、よく確認もせずに再RUNをさせてしまうと発生したりします。また、何らかのトラ ブルで mv が不完全となり(よく覚えていませんが、例えば移動できないファイルが混じっていたりすると止まりませんでしたっけ)中途半端に target ができてしまった後によく確認せずもう一度やろうとしたりした時とかも。

本来、失敗した場合はロールバックして元通りになることが保証されていればいいのですが、そこは怪しい。
一括して移動する系のコマンドにおいて中途半端な状況にて取り残されてしまうと、かなりあとが面倒になりますよね。特に、オリジナル側の削除をあとで一括 で消すならまだしも(UNIX の mv がどうだったか覚えていませんが)移動元の中に含む複数のディレクトリやファイルについて、1つづつ成功すると同時に順次消すような実装のされているもの だったりすると、泣き別れ状態になって結構厄介。(Windows の Explorer で SHIFT + マウス操作でフォルダ移動を行うとそうなりますよね~)

なので、個人的にはですが、ディレクトリのリネームや移動を含む場合、環境チェックと分岐は必ず行います。また、特にパーティションをまたぐ可能性のある 移動に際しては、「何らかの理由で失敗した場合にロールバックしないかもしれないコマンド」はあまり信用せず、自らコピーし確認した後オリジナルを消す、 ようにしています。
 
 


カテゴリー「DEL,ERASE,REN…ファイル削除/復活/移動/名前の変更」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2003年11月10日 17:30に投稿されたエントリーのページです。

ひとつ前の投稿は「[2000,NT]ファイルの中身があるか(サイズが0でないか)を確認するには」です。

次の投稿は「[2000]ユーザ名、パスワードが異なる多数のクライアントPCにファイルをコピーするには」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート