none
階層付ファイルのコピー RRS feed

  • 質問

  • お世話になります。

    c:\test\data\test.txt
                     \abc.dat
                     \ooo.xlsx
                     \sub\test2.txt
                     \sub\dddd.dat
                     \sub\uuu.xlsx

    このdata フォルダにあるファイル(*.txt,*xlsx)を階層付でdata2フォルダにコピーしたいとします。
    この時data2フォルダはありません。

    PS c:\..test> cpi .\data .\data2 -Recurse -Filter *.txt  #1
    PS c:\..test> cpi .\data .\data2 -Recurse -Filter *.xlsx #2

    #1では、data2が作成され、次のようにこピされます。

    c:\test\data2\test.txt
                        \sub\test2.txt

    #2が実行されると、data2のフォルダ内にdataフォルダが作成さ、階層付コピーとなります。

    c:\test\data2\test.txt
                       \sub\test2.txt
                  \data\ooo.xlsx
                        \data\sub\uuu.xlsx

    結果、#2のコマンドを次の方法で、dataと同じフォルダ階層と対象ファイルのコピーが行えましたが、
    理解できずにいます。

    PS c:\..test> cpi .\data\* .\data2 -Recurse -Filter *.xlsx #2

    なぜ2回目は、「.\data\*」と指示する必要があるのでしょうか。

    教えてください。

    2015年7月16日 4:35

回答

  • なぜ…というご質問に対しては、コピー先のフォルダの有無によって挙動が変わる仕様だから…という回答にならざるを得ないかもしれません。

    具体的には、以下のページで纏められているような挙動になります。

    Copy-Item -Recurse の振舞 

    コピー先のフォルダの有無によって挙動が変わるのでは困る、というのであれば、前もってフォルダの存在を確認し、なければ作成しておく、のような処理を入れておくのが現実的かと思います。

    • 回答としてマーク Brillia 2015年7月17日 1:09
    2015年7月16日 5:43
    モデレータ

すべての返信

  • なぜ…というご質問に対しては、コピー先のフォルダの有無によって挙動が変わる仕様だから…という回答にならざるを得ないかもしれません。

    具体的には、以下のページで纏められているような挙動になります。

    Copy-Item -Recurse の振舞 

    コピー先のフォルダの有無によって挙動が変わるのでは困る、というのであれば、前もってフォルダの存在を確認し、なければ作成しておく、のような処理を入れておくのが現実的かと思います。

    • 回答としてマーク Brillia 2015年7月17日 1:09
    2015年7月16日 5:43
    モデレータ
  • ご返事ありがとうございます。

    十分理解できました。

    2015年7月17日 1:09