- ベストアンサー
バッチ
robocopyコマンドで拡張子のないファイルをコピーしたいのですが、うまくいきません。どうすれば良いかご教示願えませんでしょうか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
以前に回答させて頂いた時に、質問者様の使用用途が分からなかったので、とりあえず「/E」オプションを付けるように回答させて頂きましたが、「/E」オプションは「空のものも含めてサブフォルダをコピーする」というオプションです。 今回の質問者さんのケースですと、単一のファイルのみのコピーですので、今回は「/E」オプションを付けない様にしてみて下さい。これで空のフォルダやサブフォルダはコピーされない筈です。
その他の回答 (4)
- kon77
- ベストアンサー率70% (83/117)
教えて頂いた構文を実行しましたら、確かにこちらでもエラーが出ました。 コピー元はフォルダまでを指定し、コピーしたいファイルはコピー先の後に記述する様にしてみて下さい。こちらの環境ではそれで正常にコピー出来ました。今回の質問者さんのケースでは/Eオプションは必要ないかも知れません。 @echo off set moto="C:\Users\ユーザー名\AppData\Local\Google\Chrome\User Data\Default" set file="Bookmarks" set saki="D:" robocopy %moto% %saki% %file% pause
お礼
ご回答ありがとうございました。
補足
ご回答ありがとうございます。 確かにBookmarkのコピーはできたのですが、余計なフォルダまでコピーされます。 そのフォルダの中を確認してみると空でした。 Bookmarkと同じ階層のフォルダがコピーされ、ファイルはコピーされずに正常でした。 なぜフォルダまでコピーされるのでしょうか?
- kon77
- ベストアンサー率70% (83/117)
具体的な例を書きたいと思います。 以下の6つのファイルがあったとします。 C:\コピー元\001\a.jpg C:\コピー元\001\bb.jpg C:\コピー元\001\ccc.jpg C:\コピー元\001\aaaaa C:\コピー元\001\bbbbbb C:\コピー元\001\ccccccc ■ 全てのファイルをコピーする場合 robocopy C:\コピー元 C:\コピー先 /E (6個全てのファイルがコピーされます。) ■ 拡張子の無い6文字までのファイル名のファイルだけをコピーする場合 robocopy C:\コピー元 C:\コピー先 ?????? /E (aaaaa、bbbbbbがコピーされます。) ■ cccccccだけをコピーする場合 robocopy C:\コピー元 C:\コピー先 ccccccc /E (cccccccだけがコピーされます。) 上記の例と同じような構文で実行しても出来ないのであれば、もしかしたら構文以外に問題があるのかも知れません。 自分はWindowsXPで「Windows Server 2003 Resource Kit Tools」に含まれるrobocopyコマンドを使っているのですが、当方の環境では上記の構文で全てうまくコピー出来ています。 Windows7に含まれるrobocopyコマンドと、上記のrobocopyコマンドの仕様が違うとは思えないのですが、もしかしたら違うのかも知れません。 こちらの環境では、フォルダによっては「?」を8個並べてファイル名を指定しても、8文字以上のファイル名がコピーされてしまう等の現象は出ています。その原因は分かりません。 ただ拡張子がないファイルがコピー出来ないという現象は確認出来ていないので検証が出来ません。 質問者さんが、具体的にどういう構文でrobocopyコマンドを実行されているのかや、対象のフォルダ構造や対象のファイル、エラーメッセージは出ているのか等を教えて頂ければ一番分かりやすいかと思います。 上記のように、シンプルなフォルダ構造でテストしても出来ないのであれば、対象ファイルの属性や、コマンド実行時の管理者権限の有無等、構文以外の他の要素を疑ってみても良いかも知れません。
お礼
ご回答ありがとうございました。
補足
指定されたパスが見つかりませんと出ます。 拡張子なしだとフォルダと認識されているようで、ファイルとして認識してくれません。 @echo off set moto="C:\Users\ユーザー名\AppData\Local\Google\Chrome\User Data\Default\Bookmarks" set saki="D:" robocopy %moto% %saki% /e pause
- kon77
- ベストアンサー率70% (83/117)
すみません。No.1に書かせて頂いた例では、サブフォルダがある場合はうまく行きませんでした。「/E」オプションを付けて下さい。 robocopy コピー元 コピー先 /E あとご質問頂いた件ですが、 「?」は「任意の一文字」の意味です。 「*」は「任意の複数文字」の意味です。 あと、コマンドプロンプトにこだわらなければ、「RichCopy」というrobocopyのGUIツールもあります。 参考URL Robocopy よく使うオプション http://www.sunvisor.net/win/robocopy/example Robocopyでフォルダをコピー http://www.sunvisor.net/win/robocopy フォルダを同期させるMS純正の高機能コマンド“robocopy”をGUIで「RichCopy」 http://www.forest.impress.co.jp/article/2009/05/15/richcopy.html コマンドプロンプトのワイルドカード機能 http://cmd-pro.com/tec_wild.html
お礼
ご回答ありがとうございました。
補足
できればコマンドプロンプトで実行したいです。 ?を付けてもできませんでした。
- kon77
- ベストアンサー率70% (83/117)
拡張子無しのファイルだけをコピーしたいという事でしょうか。 自分はあまりコマンドプロンプトは詳しくないですが、以下のコマンドで出来ないでしょうか。 robocopy C:\コピー元 C:\コピー先 ?????????????????? もしかしたらもっとスマートな書き方があるかも知れません。 あまりにも長すぎるファイル名のファイルは対象にならないかも知れません。 うまく行かなかったら「?」の数を調節してみて下さい。 拡張子有りのファイルと、拡張子無しのファイル、両方であれば、以下のコマンドで出来ないでしょうか。 robocopy C:\コピー元 C:\コピー先 *
お礼
ご回答ありがとうございました。
補足
>robocopy C:\コピー元 C:\コピー先 ?????????????????? 「?」を付ける意味を教えて頂けないでしょうか。 >robocopy C:\コピー元 C:\コピー先 * できませんでした。
お礼
長々とありがとうございました。意図していたものが実行できました。
補足
すみません、/Eを外しても変わりませんでした。