アプリ版:「スタンプのみでお礼する」機能のリリースについて

ミラーコピーをしたいのですが、エラーが出たらリトライを1回にしたいです。
そこで、
robocopy (コピー元) (コピー先) /mir /b /r=1
を実行するとコマンドプロンプトの画面が一瞬表示されすぐに消えて、コピーがされませんがどこがおかしいのでしょうか。

また、コピーのログを残したいのですが、「/log:c:\(ファイル名).txt」でログファイルを残せるのでしょうか。
robocopy (コピー元) (コピー先) /mir /b /r=1 /log:c:\(ファイル名).txt

windows7、スタンドアロン、administrators権限ユーザーでの実行です。

A 回答 (3件)

バグではない気がします。



サンプルを挙げると、以下のようなバッチファイルで出来るはずです。

右クリックから管理者権限で実行してください。

Windows10環境で動作確認していますが、恐らくWindows7でも同じ動作をするはずです。

―――――――――――――――――――――

@echo off

rem ■ バッチファイルがあるフォルダをカレントディレクトリにする
pushd "%~dp0"

rem ■ コピー先フォルダの作成
md "C:\Program Files Backup\Program Files"

rem ■ 画面のクリア
cls

rem ■ robocopyコマンドを実行
echo. 
echo. 処理中です・・・
robocopy "C:\Program Files" "C:\Program Files Backup\Program Files" /mir /b /r:1 /log:"C:\Program Files Backup\robocopy.log"

rem ■ 完了メッセージ
echo. 
echo. 完了しました
echo. 
pause

―――――――――――――――――――――

又、ログの出力先フォルダは事前に作成しておく必要があります。

又、もし「Program Files」フォルダ内に「desktop.ini」という隠しファイルがある場合は、その効果によって、実際のフォルダ名とは違うフォルダ名で表示されます。

つまり、
「C:\Program Files」を「C:\Program Files 2」にコピーしたとしても、
「desktop.ini」も一緒にコピーされますから、
「C:\Program Files 2」が「Program Files」と表示される場合があるという意味です。
    • good
    • 0
この回答へのお礼

教えて頂いたようなカッコいいバッチを書けるようになりたいと思っていました!
大変勉強不足で恐縮ですが、単にrobocopy~ という一行を書いても動かないのでしょうか?
バッチファイルがあるデレクトリをカレントデレクトリにするのは何故でしょうか?
タスクスケジューラーで定期的に自動でバックアップをとりたい場合はpauseは入れない方がいいでしょうか?
質問ばかりですみません…

今は試す環境がないので明日確認してみます!

お礼日時:2018/12/17 00:23

No.2です。




> 単にrobocopy~ という一行を書いても動かないのでしょうか?

いえいえ、動きます。あくまで実用のサンプルを書かせて頂いただけです。


> バッチファイルがあるデレクトリをカレントデレクトリにするのは何故でしょうか?

バッチファイルを右クリックして管理者として実行した場合は、
カレントディレクトリが「C:\WINDOWS\system32」になりますから、
バッチファイル内の全てのパスが、
絶対パス(「C:\xxx.log」等)で書かれていれば問題無いですが、
相対パス(「xxx.log」等)で書かれている場合は、
「C:\WINDOWS\system32\xxx.log」のように解釈されてしまいますから、
それを防ぐ為です。

又、バッチファイルに対し、ファイルやフォルダをドラッグ&ドロップした場合も、カレントディレクトリがバッチファイルのあるフォルダではなくなる場合がありますので同様です。


> タスクスケジューラーで定期的に自動でバックアップをとりたい場合はpauseは入れない方がいいでしょうか?

おっしゃる通り、入れない方が良いかと思います。
    • good
    • 0
この回答へのお礼

教えて頂いたバッチで上手くいきました!

そして追加の質問についてもわかりやすくご説明頂き納得しました。まだまだ教えて頂きたいことはあるのですが、また勉強してみてわからないことがありましたらこちらで質問させていただくかもしれません。

本当にどうもありがとうございました。

お礼日時:2018/12/17 23:01

「/r=1」を「/r:1」に変えてみてください。



「/log:c:\(ファイル名).txt」につきましては、おおよそ問題無いと思いますが、
パスに半角スペースを含む場合は、
「/log:"c:\xxx xxx.txt"」や、
「"/log:c:\xxx xxx.txt"」という感じで記述してください。

又、ログを上書きせず、追記していく場合は、「/log+:」と記述してください。

又、「pause」コマンドでバッチファイルの処理を一時停止出来ますので、robocopyコマンドの次の行に「pause」とだけ記述すると、バッチファイルを一時停止出来ます。
    • good
    • 0
この回答へのお礼

ありがとうございます!
質問欄に書いたのが間違ておりまして「/r:1」と実際はしているのですが動かないのです。。
ちなみにそのほかのオプションでも動かないことが多いです。

logの出力に間違いはなさそうで安心しました。

記述方法に間違いがないのに実行されないのであれば、スタンドアロンで利用しており更新ファイルはあったっていないのでバグなのでしょうか?

お礼日時:2018/12/16 14:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!