matub-ken
@matub-ken (松原 健)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

teamsでonedriveへのショートカットを追加したフォルダをバッチで直接サーバにコピーするとエラーになる。

解決したいこと

Teamsのファイルをファイルサーバにコピーする業務があり、簡素化をしたいので、「onedriveへのショートカットを追加」で作成したフォルダからサーバフォルダへのコピーをバッチで実施したいです。
しかし、このショートカットフォルダが特殊なようで、コピーコマンドが、「パラメータが間違っています」のエラーになります。
下記の通り、中間フォルダを経由させることで、コピーは出来るようになりましたが、エラーの原因を知り、出来れば中間フォルダを使わずに処理したいです。

※「onedriveへのショートカットを追加」で作成したフォルダは、アイコンも特殊で、常時Teamsと同期しているフォルダなので特殊なフォルダであることは、なんとなくわかります。
単純に「特殊なフォルダで、そんな仕様なんだよ!」という割り切りだけなのかもしれませんが、なぜ、そんな不思議な仕様なのか、また、パラメータなどで解決できるものなのか知りたくて、質問させていただきました。

自分で試したこと

まず、teamsのファイルをバッチからアクセスするために、「onedriveへのショートカットを追加」で、自分のPCのフォルダにファイルが存在するような状態にしました。
このフォルダのファイルは手作業であれば、ファイルサーバの自分と関係者だけがアクセスできるフォルダにコピー可能です。
ところが、バッチでこのショートカットから手作業でコピー可能なフォルダにrobocopy やxcopyコマンドを使ってコピーしようとすると「パラメータが間違っています」となり、コピーできません。
カレントディレクトリを移動して「.」でディレクトリを指定したりしましたが、状況は変わりませんでした。

なお、コピー元は同じショートカットのまま、コピー先をサーバでなく、ローカルフォルダーにすると、エラーにならず、コピーできます。
また、当たり前ですが、そのローカルフォルダーからサーバへのコピーも問題なくできます。

そのため、今は、
1.ショートカットで出来たフォルダを一度ローカルフォルダーにcopyでコピーする。
2.コピーしたローカルフォルダから、サーバにコピーする。
という2段階コピーする事でショートカットからサーバにコピーしいます。

コピーはxcopy , robocopyどちらでも同じでした。
手動では直接コピーできるし、上記のように中間フォルダをかませばできるので、ユーザ権限は関係ないかと思い、管理者権限では試していません。(というか、逆にローカルの管理者権限だと、ADで管理されているサーバにアクセスできない気がします。)

0

1Answer

なぜ、そんな不思議な仕様なのか

ファイルシステムが異なるからでは?

xcopyは32bit機のfat等のファイルシステムの時のコマンドです。fat32,NTFSに対応しながら拡張、修正を繰り返して、今に至っています。

一方、OneDriveはクラウドストレージと言われるもので、ネットワーク上のファイルシステムです。fatとは全く次元が異なる代物です。

powershell(Copy-Item)やPower Automateなら可能とおもわれますが、同期で解決できそうでは?

尚、ショートカットはフォルダではありません。リンクファイルです。リンク元のオリジナルでコピーしましょう。

1Like

Comments

  1. @matub-ken

    Questioner

    返信ありがとうございます。そうですよねxcopyは古いので、なんとなく段々不具合が出てきても不思議でないような気はしてます。robocopyは対応してほしかったですが。

    弊社いまだにファイルサーバで共有というのがスタンダードなので、部内ではファイルサーバに入れて使いたいらしいんですよね。

    ところで、
    >同期で解決できそうでは?
    >尚、ショートカットはフォルダではありません。リンクファイルです。リンク元のオリジナルでコピーしましょう。
    の意味が理解できませんでした。教えていただいたリンクからもう少し調べてみます。

  2. @matub-ken

    Questioner

    リンクって、少し調べましたが、MACでいうエイリアスみたいなのが、いつの間にかwindowsにもできてたんですね。
    両方あると間違えそうだと思いながら調べたら、2種類どころか、ショートカット、シンボリックリンク、ハードリンク、ジャンクションリンクとめっちゃ複雑ですね。理解するのに時間がかかりそうですが、勉強します。(便利なのかもしれないけど、複雑なのは嫌いだ(^^))

  3. copyするapiを見つけました。

  4. @matub-ken

    Questioner

    このなんだかわからないリンクですが、やらしいことにPowerAutomateDesktopからはフォルダとして見えないようで、フォルダーコピーできません。(フォルダがありませんとなります。)

    DOSコマンドからは中間フォルダを経由して、サーバに保存できましたが、PowerAutomateDesktopだけでは、このリンクからサーバにコピーする方法はなさそうです。
    自分がメンテナンスするのであれば、バッチ処理で問題ないのですが、今後のメンテナンスを考えると、PowerAutomateDesktopだけで処理したかったのですが、無理みたいですね。

    マイクロソフトって、なんでこうややこしくなるような仕組みを生み出すのでしょうか。

Your answer might help someone💌