例によって適当にフォルダとファイルを作成します。
C:\Users\takk\aaa> powershell -c "1..5 | %{$r=get-random; $dir=$r -replace('(...)','$&\\');mkdir dir1/$dir | out-null;echo HELLO > dir1/$dir/file.txt}"
このようなフォルダとファイルになりました。
C:\Users\takk\aaa>dir /b/s C:\Users\takk\aaa\dir1 C:\Users\takk\aaa\dir1\142 C:\Users\takk\aaa\dir1\175 C:\Users\takk\aaa\dir1\482 C:\Users\takk\aaa\dir1\901 C:\Users\takk\aaa\dir1\966 C:\Users\takk\aaa\dir1\142\849 C:\Users\takk\aaa\dir1\142\849\345 C:\Users\takk\aaa\dir1\142\849\345\5 C:\Users\takk\aaa\dir1\142\849\345\5\file.txt C:\Users\takk\aaa\dir1\175\882 C:\Users\takk\aaa\dir1\175\882\191 C:\Users\takk\aaa\dir1\175\882\191\1 C:\Users\takk\aaa\dir1\175\882\191\1\file.txt C:\Users\takk\aaa\dir1\482\614 C:\Users\takk\aaa\dir1\482\614\778 C:\Users\takk\aaa\dir1\482\614\778\file.txt C:\Users\takk\aaa\dir1\901\626 C:\Users\takk\aaa\dir1\901\626\234 C:\Users\takk\aaa\dir1\901\626\234\file.txt C:\Users\takk\aaa\dir1\966\459 C:\Users\takk\aaa\dir1\966\459\308 C:\Users\takk\aaa\dir1\966\459\308\file.txt C:\Users\takk\aaa>
ではdir1をコピーしてdir2を作ります。ただし、フォルダツリーのみでファイルはコピーしません。
C:\Users\takk\aaa>xcopy /t dir1 dir2 dir2 は受け側のファイル名ですか、 またはディレクトリ名ですか (F= ファイル、D= ディレクトリ)? d C:\Users\takk\aaa>
/tオプションをつけることで、フォルダツリーのみコピーされました。
C:\Users\takk\aaa>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は C288-F709 です
C:\Users\takk\aaa のディレクトリ
2017/07/10 21:50 <DIR> .
2017/07/10 21:50 <DIR> ..
2017/07/10 21:27 <DIR> dir1
2017/07/10 21:50 <DIR> dir2
0 個のファイル 0 バイト
4 個のディレクトリ 167,918,505,984 バイトの空き領域
C:\Users\takk\aaa>dir /b/s dir2
C:\Users\takk\aaa\dir2\142
C:\Users\takk\aaa\dir2\175
C:\Users\takk\aaa\dir2\482
C:\Users\takk\aaa\dir2\901
C:\Users\takk\aaa\dir2\966
C:\Users\takk\aaa\dir2\142\849
C:\Users\takk\aaa\dir2\142\849\345
C:\Users\takk\aaa\dir2\142\849\345\5
C:\Users\takk\aaa\dir2\175\882
C:\Users\takk\aaa\dir2\175\882\191
C:\Users\takk\aaa\dir2\175\882\191\1
C:\Users\takk\aaa\dir2\482\614
C:\Users\takk\aaa\dir2\482\614\778
C:\Users\takk\aaa\dir2\901\626
C:\Users\takk\aaa\dir2\901\626\234
C:\Users\takk\aaa\dir2\966\459
C:\Users\takk\aaa\dir2\966\459\308
C:\Users\takk\aaa>
次にこのdir2をコピーしてdir3を作成してみましょう。
C:\Users\takk\aaa>xcopy /t dir2 dir3 dir3 は受け側のファイル名ですか、 またはディレクトリ名ですか (F= ファイル、D= ディレクトリ)? d C:\Users\takk\aaa>
コピーできたか確認します。
C:\Users\takk\aaa>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は C288-F709 です
C:\Users\takk\aaa のディレクトリ
2017/07/10 21:50 <DIR> .
2017/07/10 21:50 <DIR> ..
2017/07/10 21:27 <DIR> dir1
2017/07/10 21:50 <DIR> dir2
0 個のファイル 0 バイト
4 個のディレクトリ 167,918,374,912 バイトの空き領域
C:\Users\takk\aaa>
dir3が作られていません。xcopyの/tオプションは、ファイルが格納されていないフォルダは無視されるからです。
空フォルダの場合でもコピーする/eオプションと併用します。
C:\Users\takk\aaa>xcopy /t/e dir2 dir3
dir3 は受け側のファイル名ですか、
またはディレクトリ名ですか
(F= ファイル、D= ディレクトリ)? d
C:\Users\takk\aaa>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は C288-F709 です
C:\Users\takk\aaa のディレクトリ
2017/07/10 22:04 <DIR> .
2017/07/10 22:04 <DIR> ..
2017/07/10 21:27 <DIR> dir1
2017/07/10 21:50 <DIR> dir2
2017/07/10 22:04 <DIR> dir3
0 個のファイル 0 バイト
5 個のディレクトリ 167,918,379,008 バイトの空き領域
C:\Users\takk\aaa>
dir3のツリーを確認してみましょう。
C:\Users\takk\aaa>tree dir3
フォルダー パスの一覧
ボリューム シリアル番号は 00000014 C288:F709 です
C:\USERS\TAKK\AAA\DIR3
├─142
│ └─849
│ └─345
│ └─5
├─175
│ └─882
│ └─191
│ └─1
├─482
│ └─614
│ └─778
├─901
│ └─626
│ └─234
└─966
└─459
└─308
C:\Users\takk\aaa>
問題なくフォルダツリーができました。


コメント