2024年2月28日水曜日

PowerShellでネットワークカテゴリを切り替えたいときの覚書

 

どうも皆様ぐーてんもるげん!
今回のネタはネットワークカテゴリの切替処理。
他端末の共有フォルダを見ようとしても見えない、Pingが通らないetcみたいなトラブルに見舞われることがあるんですが、大抵の場合、ネットワークの設定が「パブリックネットワーク」になってるんですよね。

基本的にWindows10以降であればGUIで簡単に変更することが出来るんですが、UACの設定を弄ってる場合など、このメニュー自体が出てこない事があります。
そういう場合、PowerShellで対応する方法があるんですが、しょっちゅうググるのが面倒になっちゃったので、自分のメモも兼ねて記事にして残しておくことにしました。

手順1.PowerShellを管理者権限で起動します。
起動したら「Get-NetConnectionProfile」と入力

管理者:Windows PowerShell ×
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6                        

PS C:\Users\hogehoge>
Get-NetConnectionProfile


手順2.現在アクティブなネットワークの情報が出てきます。
「InterfaceIndex」に出力された番号を控えておきます。
管理者:Windows PowerShell ×
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6                        

PS C:\Users\hogehoge>
Get-NetConnectionProfile

Name                     : ネットワーク
InterfaceAlias           : イーサネット
InterfaceIndex           : 26
NetworkCategory          : Public
DomainAuthenticationKind : None
IPv4Connectivity         : Internet
IPv6Connectivity         : NoTraffic
				


PS C:\Users\hogehoge>


手順3.下記コマンドを入力して設定変更を行います。
Get-NetConnectionProfile -InterfaceIndex 先程控えた番号を指定 | Set-NetConnectionProfile -NetworkCategory Private
重要なのは「InterfaceIndex」と「NetworkCategory」ですね。

InterfaceIndex:変更したいネットワークアダプタを番号指定します。
NetworkCategory:変更したいネットワークカテゴリを指定します。今回の例ではパブリックからプライベートに変更していますが、逆に本項目に「Public」と指定すればプライベートになっている設定をパブリックに切り換える事が出来ます。
管理者:Windows PowerShell ×
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6                        

PS C:\Users\hogehoge>
Get-NetConnectionProfile

Name                     : ネットワーク
InterfaceAlias           : イーサネット
InterfaceIndex           : 26
NetworkCategory          : Public
DomainAuthenticationKind : None
IPv4Connectivity         : Internet
IPv6Connectivity         : NoTraffic
				


PS C:\Users\hogehoge> Get-NetConnectionProfile -InterfaceIndex 26 | Set-NetConnectionProfile -NetworkCategory Private


手順4.特に表示は変化しませんが、これで設定変更されています。
管理者:Windows PowerShell ×
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6                        

PS C:\Users\hogehoge>
Get-NetConnectionProfile

Name                     : ネットワーク
InterfaceAlias           : イーサネット
InterfaceIndex           : 26
NetworkCategory          : Public
DomainAuthenticationKind : None
IPv4Connectivity         : Internet
IPv6Connectivity         : NoTraffic
				


PS C:\Users\hogehoge> Get-NetConnectionProfile -InterfaceIndex 26 | Set-NetConnectionProfile -NetworkCategory Private
PS C:\Users\hogehoge>


手順5.実行結果を確認する為、再度「Get-NetConnectionProfile 」を実行します。
管理者:Windows PowerShell ×
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6                        

PS C:\Users\hogehoge>
Get-NetConnectionProfile

Name                     : ネットワーク
InterfaceAlias           : イーサネット
InterfaceIndex           : 26
NetworkCategory          : Public
DomainAuthenticationKind : None
IPv4Connectivity         : Internet
IPv6Connectivity         : NoTraffic
				


PS C:\Users\hogehoge> Get-NetConnectionProfile


手順6.設定がパブリックからプライベートに切り替わったことが分かります。
管理者:Windows PowerShell ×
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6                        

PS C:\Users\hogehoge>
Get-NetConnectionProfile

Name                     : ネットワーク
InterfaceAlias           : イーサネット
InterfaceIndex           : 26
NetworkCategory          : Public
DomainAuthenticationKind : None
IPv4Connectivity         : Internet
IPv6Connectivity         : NoTraffic
				


PS C:\Users\hogehoge> Get-NetConnectionProfile -InterfaceIndex 26 | Set-NetConnectionProfile -NetworkCategory Private
PS C:\Users\hogehoge> Get-NetConnectionProfile

Name                     : ネットワーク
InterfaceAlias           : イーサネット
InterfaceIndex           : 26
NetworkCategory          : Private
DomainAuthenticationKind : None
IPv4Connectivity         : Internet
IPv6Connectivity         : NoTraffic
				


PS C:\Users\hogehoge>
以上になります。ちなみにIntercaceIndexは結構コロコロ変わるみたいで、一概に同じ番号とかではないみたいです。
くれぐれもコピペで実行される際は、十分ご注意下さいね。

ではまた!( ・ω・)ノ

2024年2月26日月曜日

PIPC版Officeがいつの間にか完全オフライン運用出来なくなっていたよ!

どうも皆さんぐーてんもるげん!いかがお過ごしですか?
今回のネタはOfficeのライセンスのお話。
先に言っときます。相談に乗って下さった中の人には悪いんですが、
もうね、うんざりですよ。本当に。

先日の事、前のブログでもネタにした闇堕ちLetsNoteに入ってた、明らかに駄目だろコレOfficeライセンスの件でMicrosoftの中の人と会話することがありました。
その際ライセンスの話の流れで、たまたまPIPC版OfficeとPOSA版Officeの話になったのですが、

私「たまーに業務上の理由でどうしてもオンラインに出来ないって端末が未だにあるんですよ。そういう端末の場合、POSA版は駄目じゃないですか。だからPIPC版で対応して貰うしかないですよね」

中の人「え?PIPCでも駄目ですよ?

私「は?駄目?」

中の人「ええ、Office2019まではそれで良かったんですが、Office2021以降のバージョンはPIPCであっても定期的なオンライン認証が必要です

私「本当ですか??えぇ!?完全オフライン環境で使用したい場合はどうすれば?」

中の人「Office2021以降のバージョンであれば、LTSC版を購入頂くしかありません

私「マジですか・・・・」

とまぁ、当初話していた内容とは脱線したんですが、それ以上に有益な情報が得られたので、記事にしてみました。

POSA版とは

Point Of Sales Activationの頭文字を取って、「POSA版」と呼称されます。
要はレジを通してお金を払わないと、キーが有効にはならないよーってヤツですね。コンビニとかで売ってるAppleGiftカードとかと同じだと思って貰えばいいかな。
POSA版のライセンスはMicrosoftアカウントに紐づく為、Officeのライセンスは「個人」の持ち物になります。つまるところ、Aさんが持ってるPOSA版OfficeをBさんが使ったら駄目だよーってことですね。
反面、ハードウェアには何のライセンスも紐づかない為、正規の手続きを踏めば別端末にライセンスを移すことは可能です。
※これが非常にめんどくさいのは内緒。。。
POSA版はライセンスがMicrosoftアカウントに紐づくという特性上、該当端末が常時オンライン接続されており、Microsoftアカウントがサインイン状態である事が大前提となっています。定期的にライセンスの状態をチェックしており、おかしい使われ方をしていないかをモニターしてるわけですね(パトロール認証)。該当端末を一定期間以上オフラインにしてしまうと、サインインを促すメッセージが出たり、最悪の場合Office自体が起動不可能になってしまうのはこのためです。

PIPC版とは

PCに付属されてくるライセンスになります。
パソコン買ったら既にOfficeが入ってる事がありますよね?アレです。
PIPC版はインストールされていたハードウェアにライセンスが紐づく為、ユーザ間で使いまわしても問題は無い反面、ハードウェアが物理故障等で寿命を迎えた場合、ライセンスも失効することになります。
また、ライセンス自体もハードウェアに紐づく為、完全なオフライン環境でも問題なく使用することが出来ました。今まではね

完全オフライン運用出来たのは2019まで

上で説明した内容から、PIPC版であればMicrosoftアカウントに紐づかない為、常時オフラインであっても問題ないと考えられたかも知れません。
実際、Office2019まではその仕様で間違は無かったようなのですが、Office2021以降のバージョンからは、PIPC版Officeであってもパトロール認証には引っかかるようになってしまったようなのです。

完全オフライン運用にはLTSC版の導入が必要

LTSC版とは?
Microsoftが中小企業向けに販売している、Software in CSPで提供されるOffice製品に付与される名称になります。
ええ、もう訳が分からないね。なんのこっちゃ?

従来、Openライセンスという名称で提供されていた、Microsftが提供するボリュームライセンスの販売形態の事です。
会社なんかでパソコンを10数台所持していて、全部の端末にOffice製品を入れたいとします。が、1台毎にライセンス情報を管理するのは非常にめんどくさいし、POSA版を買ったとしてもライセンス自体は会社ではなく「個人」に紐づく為、該当する社員が退職してしまった場合、別の社員がそのライセンスを使いまわすのはライセンス違反になっちゃうんですね。
※ユーザ間のPOSA版ライセンスを譲渡する事自体は適法である、という判例が出たとのお話も聞いた記憶がありますが、詳しくないので今回は省略します。
気になる方はググってみてください。
こういう問題をまるっと解決するのがボリュームライセンスになるわけです。ライセンス自体は企業の持ち物になりますし、利用する本数で契約する為無駄が出にくい、しかも1ライセンスあたりの価格は安価になる傾向があるという、ぱっと見良い事だらけなライセンスになります。
デメリットとして一番大きいのは「ユーザ間の譲渡が出来ない」事でしょうね。例えば「このPCもう使わなくなったし売っちゃおう!」となった時に、搭載されているOSやOfficeがボリュームライセンスで購入したものだった場合、OSやらOfficeを付けた状態で売るのはライセンス違反になります。
前の記事で紹介した、闇堕ちしちゃったLetsNoteに入ってたOfficeもコレと同じです。

何で名前が変わったのかなぁと考えていたんですが、恐らくMicrosoft的にはSoftware in CSPの買い切り永続ライセンス(従来のOpenライセンスと同じ)からの移行を足掛かりに、サブスクリプション形式のライセンスへの移行を進めたいんでしょうな。
ちなみにCSPライセンスの金額は購入本数とソフトウェアの種類でかなり開きがあるので、一概に参考価格を提示することは難しいみたいです。

最後に

正直に言おう、もうね、うんざりですよ(2回目)。
間違っちゃいけないのは、悪いのはMicrosoftではなくて、あの手この手で不正利用しようとする不届き者だって事なんです。
それは分るんです。わかるんですが、まともにライセンス買ってるユーザに対する対応と負担が大きすぎやしません?
すんなり導入して使っている分はいいんですが、ちょーっとでもそこから外れる(オフライン環境で使いたいが該当するかは本当に疑問)と、もうね嵌る嵌る。
何が腹が立つって、まともに規約を守って使おうとしている人ほど苦労する。
正気の沙汰じゃありませんよ。こんなの。。

個人的にはもうみんなでLibreOffceに移行しちゃった方がいいんじゃないの?と思ってます。まぁ色々と問題はあるんでしょうが。

たまには真面目な事も考える私です。
ではまた!( ・ω・)ノ

2024年2月21日水曜日

Amazon整備済み品Let's Note「CF-SZ6」を買ってみたら面白いものが入ってたよ!!


 どうも皆様ぐーてんもるげん!年度末の忙しさで色々嫌になりつつある私です。
今回のネタはずばりAmazon整備済み品で購入したLetsNote。
記事を全部読むと極めて長ったらしいので、結論だけ先に書くと
本気でお勧め出来ない、ですね。うん。
私が購入したような業者がすべてとは思いたくありませんが、Amaz〇nの対応姿勢からするに、この手の問題を抱えた端末の存在を積極的に排除するつもりは、きっと無いのだろうなぁと思いますし。
どういう問題を抱えている端末なのか、知ってて手を出すならともかく、ちゃんと使えるPCが欲しいなら、多少高くてもショップ中古を買った方が絶対に良いです。
下につらつらと理由を記載しましたので、お暇であれば読んでもらえれば幸いです。

何で今更ノートPC買ったの?

最近外出先でノートPCを使う機会がちょこちょこあり、SteamDeckで何とかしようと思ったんですが、問題はあの見た目。
ええ、どっからどーみてもガチもんのゲーム機であり、一見するとNintend〇 Swi〇chっぽい見た目から漂うエンジョイ感たるや、真面目に何かしてるとは到底思っちゃ貰えない。
  あと、やっぱりというかフルキーボードとタッチパッドは欲しい。SteamDeck購入記事書いたときは「キーボード?いらんだろ?」と思ってたんですが、いざ無くなるとこれはこれで大変に困った訳です。
  考えてみれば、私が外でスマホじゃ事足りない状況になってノートPCを引っ張り出すケースって、大抵は長文メールを打つとかでしたからね。
で、ノートPCを選定するに至ったんですが、ゲーミングPCはSteamDeckがあるから、ここはとことんビジネス用途に特化したものにして、コスパ重視で行こう!となったんですね。

最初に候補にあがったのは、OneMixシリーズ

  One Netbookストアが販売するUMPC。10.1インチながらCPUがCorei7にメモリは16GB、ストレージが2TBという下手なデスクトップじゃ太刀打ちできないモンスターPC。
ただし高い!20万近くしちゃうんですよ。今回はコスパ重視のノートが大前提でしたからこれは却下。あとキーボードがさすがにこれはしんどい。。。

  で、次に上がってきたのがLetsNoteの12インチサイズだったんですね。
LetsNoteは以前も触ったことがあったんですが、「コレどうやったら壊れるんだよ!?」と呆れたレベルの耐久度。当然値段もとんでもないのですが、そこで「Amazon整備済み品」の存在を見つけます。

Office付きLetsNoteが5万以下で買える?マジ?

かなり状態の劣悪な製品でも5万後半くらいしちゃうのがLetsNote。
なのに私が見つけた「LetsNote SZ6」は
搭載メモリ16GB!
Office搭載(Word、Excel、PowerPoint)

これでお値段45,000円!!まぁお安い!!
もうね、満点!!

そう、怪しさがね!!
そもそもSZ6ってパナソニック的にもWindows11サポートしてなかったよね??
大体何でOffice(しかもPowerPoint付)がついて45,000円なのさ。
PowerPointが付与されているOfficeのエディションはHome&Business以上、仮にPOSA版で買った場合、ライセンスだけで43,980円もします。

いつの世もMicrosoft製品はお高いですね。

つまるところ、ライセンスだけで43,980円するソフト入れてるんですよ。はえ?
ええ、本体代は?LetsNoteは1000円ってこと?んな馬鹿な。。。。

というわけで、買ってみました!
いや、いやいやいやいや、別にネタにするためだけに買ったわけじゃないですからね。
外出先で使えるミニマムでハード的にある程度の融通の利くノートが欲しかったからですから。

で、到着した端末を起動してみたところ、
Microsoft Office2019「Plus」の文字が。

やっぱりね。。。。うん知ってた!

こんなOffice使えるか!!こんなもん付けんじゃねえ!!
というわけで、速攻OSごとリカバリしてOfficeはデストローイ!!
まぁWin10Proのライセンス付きで目立った傷もなく、この値段なら十分合格点なので、ぶっちゃけ返品するつもりは毛頭ないのですよ。うん。

じゃあ何で私が「こんなOffice使えるか!!」ってなったかってお話。
先に結論から申し上げますとですね、

ライセンス違反です、コレ。ハイ。
表題についてる「面白いものが入ってた」はまさにこれのこと。

ちなみにですが、WindowsOSのライセンスは、DSP版ライセンスが問題なく添付されているのを確認できているので問題なし。
パナソニックのサイトに行って型番とシリアル番号を入力すると、適合するOSのライセンスが含まれた専用のリカバリメディア作成用のデータをダウンロードすることが出来るんですね。
この辺りは流石ビジネスツールといったところ。素晴らしい!!
※私みたいに中古のレッツノートを買うときは、背面のシリアル番号が確認できるか必ずチェックしてから買うことをお勧めします。
ストレージ交換やシステムが不安定になった際にリカバリするとき、マジで困りますよ。

Plusって何?何で違反なの??

今回同梱されていたOfficePlus製品は、本来は法人向けに販売されるボリュームライセンスと呼ばれるタイプのライセンスになります。
ネットで見かける超絶お安いOfficeとか、中古販売価格が意味不明に安いのにOfficeが入ってる系のやつは、これを数十個、果ては数百個単位でライセンスを購入し、それを個人向けにばら売りする感じでやってるんですね。だから安いわけです。
つまるところ、個人利用する端末にゃまず入ってちゃいけないライセンス形態。だからライセンス違反品だと気づけたわけですね。うーんEasy!

ちなみに買うときにどうやって見分けるか?のポイントですが、ライセンス違反を起こしているライセンスを同梱している場合、大抵はOfficeのエディションを正確に記載してません

一般ユーザ向けに流通しているOfficeのライセンスは
・Personal
・Home&Business
・Professional
になるんですが、これを商品詳細に書きたがりません。
※Office365はそれ自体がサブスクライセンスなので割愛。

Word、Excel、PowerPointが入っていることは書いてるのに、エディションは書かない。何か変ですよね。
Home&Business以上のエディションなのは間違いないんですから、それ書けばいいのに。

逆にエディションを正確に明記している場合、信頼出来るケースが多いみたいです。
私は買ったことないのでわからないですけどね。
Amaz〇nもこの辺は知ったこっちゃないって感じなんですかね?整備済み品の認定プログラムまで付けてるし。
ハードウェアの見た目や状態は検査するけど、同梱されてるソフトウェアのライセンスは関与しないのかもですね。やれやれ。

非正規品≠違法?

これですねぇ、結構聞かれる事あるんですが、正直かなり微妙な所なんですよね。
マイクロソフトの利用規約に照らせば、間違いなくアウトなんです。
が、違法かと言われると微妙なのです。
実際、POSA版Officeの再販売等、マイクロソフトの規約ではNGだけど、合法じゃないか?とマイクロソフトとエンドユーザの間で裁判になり、結果的に「合法」となった例もありますから。
要は規約違反は必ずしもイコール違法ではない、ということですな。
あ、Officeのライセンスコピー販売とか、違法であるという判例が出たケースは別ですからね。
※ネットに転がってるクラック方法とか、バレないだろうとか思って絶対に真似しないように。
バレますし、容赦なくぶちのめされますよ。マジで。

ネット上に飛び交う情報から推測するに、マイクロソフトの規約的にはボリュームライセンスのばら売りはNGだけど、認証したライセンスがバラ売りされたボリュームライセンスかどうか調べようがないというのが実情みたいです。
勿論、今後のライセンス認証に対する方式の変更等で、調査可能になる可能性は十分あるでしょうが。

じゃあ何が問題なの?って話なんですが「利用規約に抵触していること」が問題なんですね。


利用規約違反=無保証と知れ

マイクロソフトの定める利用規約に違反しちゃってるんですから、そのソフトウェアを使用して問題になってもマイクロソフト的にゃ何のサポート義務も御座いません。
かなりアレなセキュリティホールが見つかったとして、被害を受けたとしても「利用規約違反なライセンスでしょ?なら知るか」となるわけですね。
しかもやらかした原因が仮にマイクロソフト側にあったとしても、責任は利用者が丸被りすることになるわけです。
最初にボリュームライセンスとして購入したものをばら売りしている、と書きましたが、その数も10数個なんて数じゃありません。
そのうちのひとつをマイクロソフト側が見つけて、何らかの理由でボリュームライセンス販売されたものがばら売りされていることに気付き、認証キー自体を無効にしてしまう、ということは現実に起こり得ると思います。
ライセンス違反していることを知らずに使ってたユーザが、何も考えずにマイクロソフトのサポート窓口に問い合わせたりとか、ね。
特に最近のオフィス製品は定期的にインターネット上のライセンスサーバと通信を行い、そのライセンスの妥当性についてチェックし続けるようなものもありますから、昨日まで使用出来ていたのがある日突然使えなくなる!という事も起こり得るってことですね。困りますよね、コレ。
ましてやその使えなくなった理由が「いやぁライセンス的にマズかったみたいでして」なんてクライアントに知られた日にゃどう思われるか考えたくも無いでしょ?

結論:激安ライセンスはリスクに見合わない!

もうね、これに尽きると思います。Officeなんて仕事で使うソフトの代名詞なわけで、ある日突然使えなくなったりしようもんならその影響たるや考えたくもありません。
また、ライセンス違反している事がマイクロソフトにバレた場合、損害賠償に至る可能性も十分あります。
今のところ不正なライセンスを使用していたエンドユーザが直接罪に問われたケースは少なくないようですが、可能性ゼロではありません。
仮に損害賠償の責任はないとされた場合であっても、各々の対応に要した時間なんかを考えたら全く割にあいませんし、訴訟問題に発展したということが露呈した場合、自身の社会的信頼が失墜するとも限りません。
これから先、新生活を始めた学生さんや、社会人1年目で初めての賞与でパソコンを買おう!と思われる方も出てくると思います。
そんなとき、くれぐれも「異常に安い」商品には安易に手を出さないように!
「こんな筈じゃなかった!」と、すっごく高くつく可能性もありますよ。

というか、流通させてるショップもショップですよねぇ。こんな怪しいライセンス付けて売らなきゃいいのに。
整備状態も十分問題ないレベルなんですから、Officeのライセンス抜いて5000円~1万円くらい値下げしたほうがよっぽど売れるんじゃないですかね。

ちなみにAmaz〇nに不正ライセンスっぽいのが入ってるんだけど?って問い合わせてみたんですが
「販売元に確認してね。私達ぁ知らんぜ」
的回答があり、ダメ元で販売店に確認してみましたが、
「不正ライセンスなんかじゃないもん!!正規品だもん!!」
みたいなメールが返ってきました。予想通り過ぎて笑ってしまいましたがww
まぁ、認めたら負けでしょうから、知らぬ存ぜぬなのでしょう。
気になる人はさっさと返品しちゃったほうが幸せになれると思いますよ。うん。

2024.02.22
なーんかモヤモヤしていたんで、マイクロソフトのサポート窓口に
「Plus版Officeがライセンス規約に抵触しない形で個人向けに流通していることっていうのは、あり得るのか?」
ってズバリ確認してみました。
回答は「あり得ません」との事でした。やっぱりね!

というわけで今回のネタは以上です!安すぎる商品には気をつけようね!というお話でした!
ではまた( ・ω・)ノ




2024年2月14日水曜日

ROBOCOPYでファイルのバックアップをやろうとしたら色々嵌った話

どうも皆様ぐーてんもるげん!相変わらずPCに噛り付いている私です。
今回のネタはずばり「ROBOCOPY」。

調べたことを色々メモ書きにしてたんですが、鳥頭な私のことです、きっとそのうちメモごと無くして綺麗さっぱり忘れちゃうんじゃないか?と思い立ち、自分の備忘録も兼ねて今回記事にしてみることにしました。
 

注意!
本記事に記載した内容は不肖私のつたないPC知識で書いた内容ですので、検証不足な点や誤り等ある可能性が御座います。
可能な限り情報の正確性を心がけていますが、安全性や確実な情報提供を保証するものではありません。
当方では責任を負いかねますのでご了承ください。

では本編!!

ROBOCOPYって?

指定した二つのフォルダを同期させることで、ファイルやフォルダのバックアップ等に広く利用されているコマンドになります。
ちなみに、ROBOCOPYの正式名称は「Robust File Copy」で、直訳すると「堅固で確実なファイルコピー」。
「ロボットがコピーするからロボコピー」じゃないんですね。へぇ~。
堅固で確実なファイルコピーを提供すると銘打っているだけあって、そのあたりの機能はかなりリッチです。具体的には

・エラー発生時の再試行回数の制限と待ち時間を任意に設定可能
・ネットワーク越し(NASからのファイルコピーとか)を実施した際、何らかの理由でネットワーク接続が切断された場合、中断と再開が可能
・属性やセキュリティ設定もコピー可能
・MIRコマンドを使用すれば、コピー先にある余分なファイルを削除することも可能
・256文字を超える長いパスを処理できる
・動作ログを記録できる

とまぁ、ググればわらわら出てくるんですが、かなりの機能を有している訳です。
しかもこんなに使えるROBOCOPY、WinXP以降の環境であればサポートしているため、昨今世に出回っているWindows環境であれば、ほぼどこでも使えちゃう、環境に依存しにくいコマンドなのです。

と、ここまで書いといて「何でコマンドでやるわけ?フォルダ開いてコピペすればいいやーん」と思われた方、いらっしゃると思います。
でも考えてみてください。対象のファイルが5~6個とかならまだいいでしょうが、これが10~20、下手すりゃ100を超える場合、それを一個ずつ比較して、新しいファイルかどうかを確認して、更新されてたらコピーする。
それを毎日定期的にやれ、と言われたら???
数多の世界に存在するかもしれない、真性PCドM気質な方なら耐えられるかも知れませんが、特殊な訓練を受けていない我々からすれば、そらもう発狂ものですよね?
やってられるかこの野郎であり、ミスって悲惨な結果になって泣くことになってもおかしくありません。

要は手動でやるにはあまりに現実的でない、定期的なファイルコピーを自動で行う、そこでROBOCOPYが登場する訳です!


ROBOCOPYを使ってみる

ま、とりあえずやってみましょう!今回用意した環境は以下の通り。

・コピー元:C:\FROM
0001.txt
0002.txt
0003.txt が入っています。

・コピー先:C:\TO
該当フォルダはカラの状態です。

今回発行したコマンドは下記になります。


×
@ECHO OFF

REM カレントディレクトリを保持
SET CAL_DIR=%~dp0

REM カレントディレクトリに実行ログを出力するように設定
SET LOGFILE=%CAL_DIR%ROBOCOPY.log

REM 同期元
SET DATA_FROM="C:\from"

REM 同期先
SET DATA_TO="C:\to"

ROBOCOPY %DATA_FROM% %DATA_TO% /copy:DT /B /e /XO /R:1 /W:1 /NP /NC /NS /NDL /NFL /LOG+:%LOGFILE%	

注目頂きたいのはROBOCOPYの行。何やらやたらとごちゃごちゃ並んでます。
これがROBOCOPYのオプション設定。各パラメータに意味があり、これでROBOCOPYの動作を制御しています。

今回設定したオプションは以下の通りです。

%DATA_FROM% コピー元フォルダ
%DATA_TO% コピー先フォルダ
/copy:DT コピーフラグ。DTはそれぞれD=データ、T=タイムスタンプを示します。
本オプションを設定しないと、NAS等からのデータコピーでは高確率で失敗します。
今回の例ではA=属性情報(Attributes)をコピー対象から除外する事で、異なるファイルシステム間のファイルコピーを実現しています。
/B バックアップモードでファイルのコピーを試みます。
本オプションを付与することで、ROBOCOPYコマンドの実行ユーザに該当ファイルへのアクセス権が付与されていなかったとしても、コピーすることが可能になります。
※実行ユーザがAdministratorsグループか、Backup Operatorsグループのいずれかに所属している必要があります。
/e カレントディレクトだけでなく、サブフォルダも再帰的にコピーします。
類似するオプション「/s」と異なり、/eを指定した場合、サブフォルダが
空フォルダである場合であっても、コピー対象として扱います。
/XO コピー元ファイルがコピー先ファイルより古い場合、処理対象から除外されます。
/R:1 コピー時にエラーが発生した際の再試行回数を指定します。
本パラメータを設定しない場合、規定値で100万回のリトライを繰り返します。
/W:1 再試行時の待機時間を秒単位で指定します。
本パラメータを設定しない場合、規定値で30秒待機します。
/NP ログにコピー処理の進捗状況を出力しません。
本設定を入れておかないとログが非常に煩雑になり、読みにくくなります。
/NC コピー対象ファイルがコピーされる、コピーされない理由(ファイルクラス)をログに出力しません。
/NS コピー対象ファイルのサイズ情報をログに含めません。
/NDL ログにディレクトリ一覧情報を含めません。
/NFL ログにファイル一覧情報を含めません。
/LOG+:%LOGFILE% ログに処理状況を「追記モード」で出力します。

 

 実行結果はこんな感じですね。 


×
-------------------------------------------------------------------------------
   ROBOCOPY     ::     Windows の堅牢性の高いファイル コピー                              
-------------------------------------------------------------------------------

  開始: 2024年2月1日  9:57:50
   コピー元 : C:\FROM\
     コピー先 : C:\TO\

    ファイル: *.*
	    
  オプション: *.* /NS /NC /NDL /NFL /S /E /DCOPY:D /COPY:DT /B /NP /XO /R:1 /W:1 

------------------------------------------------------------------------------


------------------------------------------------------------------------------

                  合計     コピー済み      スキップ       不一致        失敗    Extras
   ディレクトリ:         1         0         1         0         0         0
     ファイル:         3         3         0         0         0         0
      バイト:     2.3 k     2.3 k         0         0         0         0
       時刻:   0:00:00   0:00:00                       0:00:00   0:00:00


       速度:              105913 バイト/秒
       速度:               6.060 MB/分
   終了: 2024年2月1日  9:57:50

無事、TOフォルダにFROMフォルダに入っていたテキスト3つがコピーされました。

検証1.コピー元フォルダの中身とコピー先フォルダの中身が完全一致だった場合

まぁ、これに関しては検証するまでもないですね。実行結果は以下の通りです。


×
-------------------------------------------------------------------------------
   ROBOCOPY     ::     Windows の堅牢性の高いファイル コピー                              
-------------------------------------------------------------------------------

  開始: 2024年2月1日 10:53:49
   コピー元 : C:\FROM\
     コピー先 : C:\TO\

    ファイル: *.*
	    
  オプション: *.* /NS /NC /NDL /NFL /S /E /DCOPY:D /COPY:DT /B /NP /XO /R:1 /W:1 

------------------------------------------------------------------------------


------------------------------------------------------------------------------

                  合計     コピー済み      スキップ       不一致        失敗    Extras
   ディレクトリ:         1         0         1         0         0         0
     ファイル:         3         0         3         0         0         0
      バイト:     2.3 k         0     2.3 k         0         0         0
       時刻:   0:00:00   0:00:00                       0:00:00   0:00:00
   終了: 2024年2月1日 10:53:49

一覧化するとこんな感じ。更新対象ファイルはひとつも無いので、何も変化しません。

DATA_FROMフォルダ(コピー元) DATA_TOフォルダ(コピー先) 結果
0001.txt
(2024/01/01)
0001.txt
(2024/01/01)
スキップ
0002.txt
(2024/01/05)
0002.txt
(2024/01/05)
スキップ
0003.txt
(2024/01/05)
0003.txt
(2024/01/05)
スキップ

検証2.コピー元フォルダ、コピー先フォルダに同じファイルがあり、かつコピー元の方が新しかった場合

これまた結果は非常にわかりやすいです。


×
-------------------------------------------------------------------------------
   ROBOCOPY     ::     Windows の堅牢性の高いファイル コピー                              
-------------------------------------------------------------------------------

  開始: 2024年2月1日 10:59:57
   コピー元 : C:\FROM\
     コピー先 : C:\TO\

    ファイル: *.*
	    
  オプション: *.* /NS /NC /NDL /NFL /S /E /DCOPY:D /COPY:DT /B /NP /XO /R:1 /W:1 

------------------------------------------------------------------------------


------------------------------------------------------------------------------

                  合計     コピー済み      スキップ       不一致        失敗    Extras
   ディレクトリ:         1         0         1         0         0         0
     ファイル:         3         1         2         0         0         0
      バイト:     2.3 k       543     1.8 k         0         0         0
       時刻:   0:00:00   0:00:00                       0:00:00   0:00:00


       速度:              108600 バイト/秒
       速度:               6.214 MB/分
   終了: 2024年2月1日 10:59:57

結果一覧はこんな感じです。
ここまではほぼ予想通りかと思います。次からが本題。

DATA_FROMフォルダ(コピー元) DATA_TOフォルダ(コピー先) 結果
0001.txt
(2024/01/01)
0001.txt
(2024/01/01)
スキップ
0002.txt
2024/01/10にファイル更新
0002.txt
(2024/01/10)
上書き
0003.txt
(2024/01/05)
0003.txt
(2024/01/05)
スキップ

検証3.コピー元フォルダにコピー先にあるファイルが無かった場合

では、コピー先には該当ファイルがあるのに、コピー元に該当ファイルが無かったらどうなるでしょう?

実行結果からどうぞ。


×
-------------------------------------------------------------------------------
   ROBOCOPY     ::     Windows の堅牢性の高いファイル コピー                              
-------------------------------------------------------------------------------

  開始: 2024年2月1日 11:03:50
   コピー元 : C:\FROM\
     コピー先 : C:\TO\

    ファイル: *.*
	    
  オプション: *.* /NS /NC /NDL /NFL /S /E /DCOPY:D /COPY:DT /B /NP /XO /R:1 /W:1 

------------------------------------------------------------------------------


------------------------------------------------------------------------------

                  合計     コピー済み      スキップ       不一致        失敗    Extras
   ディレクトリ:         1         0         1         0         0         0
     ファイル:         2         0         2         0         0         1
      バイト:     1.4 k         0     1.4 k         0         0       986
       時刻:   0:00:00   0:00:00                       0:00:00   0:00:00
   終了: 2024年2月1日 11:03:50

MIRオプションを付与したときと同様、Extrasとして計上されました。
ただし、Extrasにカウントアップはされますが、MIRオプションと違ってコピー先フォルダから該当ファイルは削除されません

DATA_FROMフォルダ(コピー元) DATA_TOフォルダ(コピー先) 結果
0001.txt
→削除
0001.txt
(2024/01/01)
変化なし
0002.txt
(2024/01/05)
0002.txt
(2024/01/05)
スキップ
0003.txt
(2024/01/05)
0003.txt
(2024/01/05)
スキップ

検証4.コピー元フォルダよりコピー先フォルダのファイルの方が新しかった場合

では最後、コピー先フォルダの資源の方が最近更新されてたらどうなるか。

×
-------------------------------------------------------------------------------
   ROBOCOPY     ::     Windows の堅牢性の高いファイル コピー                              
-------------------------------------------------------------------------------

  開始: 2024年2月1日 11:05:48
   コピー元 : C:\FROM\
     コピー先 : C:\TO\

    ファイル: *.*
	    
  オプション: *.* /NS /NC /NDL /NFL /S /E /DCOPY:D /COPY:DT /B /NP /XO /R:1 /W:1 

------------------------------------------------------------------------------


------------------------------------------------------------------------------

                  合計     コピー済み      スキップ       不一致        失敗    Extras
   ディレクトリ:         1         0         1         0         0         0
     ファイル:         3         0         3         0         0         0
      バイト:     2.3 k         0     2.3 k         0         0         0
       時刻:   0:00:00   0:00:00                       0:00:00   0:00:00
   終了: 2024年2月1日 11:05:48


何と何も変化しません。ROBOCOPYの仕様では原則として、新旧関係なくコピー元資源でコピー先資源を上書きするので意外だったのでは無いでしょうか。
理由は上記のオプション「/XO」。
これによりコピー元資源の方がコピー先資源より古い場合、処理対象から無視されます

DATA_FROMフォルダ(コピー元) DATA_TOフォルダ(コピー先) 結果
0001.txt
(2024/01/01)
0001.txt
(2024/01/01)
スキップ
0002.txt
(2024/01/05)
0002.txt
(2024/01/05)
スキップ
0003.txt
(2024/01/05)
0003.txt
2024/01/20に更新、コピー元より新しい
スキップ

他のオプションの設定とか、MIRオプションを設定した場合の動きとかを書き出すと、とんでもなく長くなるので、そのあたりに興味のある方は是非ググってみてください!

最後までお読みいただき有難う御座いました。