Windows10 22H2 32bit に更新した翌日の晩。急いでrobocopy のバッチファイルを起動しようとしたら、起動しない。/DCOPYが理解できないと言っている。
ERROR : Invalid Parameter #5 : "/MT:128"
Simple Usage :: ROBOCOPY source destination /MIR
ERROR : Invalid Parameter #5 : "/DCOPY:DATEX"
そんなことしなくてもシンプルに /MIR を使えとうるさい。
その日はあきらめ翌日調査。そういえば日本語Windows10 だけど、英語表記だなーなんて思っていて気が付いた。バージョンだ。普段プライベートでは英語Windows使ってるから全然違和感なかった。
この懸念は当たっていて、単にrobocopy とすると
C:\Users\user1\Desktop>robocopy
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows :: Version XP010
-------------------------------------------------------------------------------
Started : Tue Dec 17 08:43:51 2024
Simple Usage :: ROBOCOPY source destination /MIR
source :: Source Directory (drive:\path or \\server\share\path).
destination :: Destination Dir (drive:\path or \\server\share\path).
/MIR :: Mirror a complete directory tree.
For more usage information run ROBOCOPY /? or read Robocopy.Doc.
NOTE: Read "True Replication" in Robocopy.Doc prior to first use of /MIR !
**** /MIR can DELETE files as well as copy them !
C:\Users\user1\Desktop>
Version XP010 なんて2000年代だぞ。XP時代だったと思う。なんでそんなものがインストールされたんだろうと思ったけど、もしかしたらと思ってpath の当たり方を調べてみる。
C:\Users\user1\Desktop>where robocopy
C:\Program Files\Windows Resource Kits\Tools\robocopy.exe
C:\Windows\System32\Robocopy.exe
C:\Users\user1\Desktop>
やっぱり二重になってる。フルパスで指定してみると、
C:\Users\user1\Desktop>C:\Windows\System32\Robocopy.exe
-------------------------------------------------------------------------------
ROBOCOPY :: Windows の堅牢性の高いファイル コピー
-------------------------------------------------------------------------------
開始: 2024年12月17日 8:47:24
簡易な使用法 :: ROBOCOPY コピー元 コピー先 /MIR
コピー元 :: コピー元ディレクトリ (ドライブ:\パスまたは \\サーバー
\共有\パス)。
コピー先 :: コピー先ディレクトリ (ドライブ:\パスまたは \\サーバー
\\共有\パス)。
/MIR :: 完全なディレクトリ ツリーをミラー化します。
詳細な使用方法については、ROBOCOPY /? を実行してください。
**** /MIR はファイルをコピーできるだけでなく、削除もできます。
C:\Users\user1\Desktop>
これこれ。でもバージョン表記が無い。Explorer でファイルプロパティを調べてみると
| XP010 | win10 32bit | win10 64bit | |
| サイズ | 78.0KB | 128KB | 168KB |
| バイト | 79,872 | 131,584 | 172,544 |
| ディスク上サイズ | 80.0KB | 80.0KB | 172KB |
| バイト | 81,920 | 81,920 | 176,128 |
| 作成日時 | 2003-4-18 | 2024-12-13 | 2024-8-19 |
| 更新日時 | 2003-4-18 | 2024-12-13 | 2024-8-19 |
| ファイルバージョン | 5.1.1.1010 | 10.0.19041.4717 | 10.0.19041.4717 |
| 製品バージョン | XP010 | 10.0.19041.4717 | 10.0.19041.4717 |
なるほどである。作成日時と言うのはインスコされた日だね。OS インストールやアップデートのあった日だ。22H2のインストールの時に、以前までpath の上位に書かれていた C:\Windows\System32\Robocopy.exe がアンインストールされ、RescuKit のrobocopy が押し上げられ、そのあとに 22H2 のpath が追加された感じだろうか。
いずれにしても、Rescue Kit の方が優先されるのでコマンドラインで古いファイルが実行されることが多くなりそうだ。
昔 DIR して作成日時調べてバグ判定していたけどね。今は日時調べてもバージョン分からないんだ。古い robocopy は XP010 ってバージョン表示されていたけど、今は OS の一部となって管理されているようだね。あと 64bit版と 32bit版とでは中身が違うようだ。
Windows Resource Kit 以下も回復コンソール以下で活躍しそうなので、軟弱な判断として C:\Windows\System32\Robocopy.exe とフルパス指定することとした。いざ回復コンソール使ったときに新しい方の Robocopy に当たって絶望するよりマシかと。
そういえば昔、xcopy か robocopy /MIR で語っていた。当時はxcopy 派が優勢であった。そんなこともあったなあ。