例によって適当にフォルダとファイルを作成します。
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>
問題なくフォルダツリーができました。
コメント