ラベル Windows の投稿を表示しています。 すべての投稿を表示
ラベル Windows の投稿を表示しています。 すべての投稿を表示

2023年4月12日水曜日

今更だけどxcopyよりrobocopy 特徴とコマンド例

ファイルやディレクトリのコピーには、Windowsに標準搭載されているxcopyコマンドが広く使われていますが、robocopy(Robust File Copy)コマンドの方が多機能で効率的です。この記事では、xcopyとrobocopyの違いと実際のコマンド例を交えて解説します。

PowerShellで時短!業務効率を最大化する便利な小技5つ

はじめに

Windows環境で作業効率を向上させるツールとして、PowerShellは非常に優れています。今回は、PowerShellを用いた時短術や便利なスクリプトを紹介します。これらを活用することで、業務効率を最大化しましょう!

2023年3月20日月曜日

Powershellで指定ディレクトリ配下の同一内容ファイルをリストアップする

またChatgptに作らせてみたシリーズ。

Powershellで指定した拡張子のファイルの複製をリストアップするスクリプト。

$basePath = "C:\tmp\"
$fileExtensions = @(".jpg", ".jpeg", ".png", ".bmp", ".gif")

# Get all files recursively
$targetFiles = Get-ChildItem $basePath -Recurse | Where-Object { $_.Extension -in $fileExtensions }

# Group files by content hash
$hashGroups = $targetFiles | Group-Object { (Get-FileHash $_.FullName).Hash }

# Filter groups that have more than one file with the same hash
$duplicateGroups = $hashGroups | Where-Object { $_.Count -gt 1 }

# Display information about duplicate files
foreach ($group in $duplicateGroups) {
    Write-Host "Duplicate files with hash $($group.Name):"
    foreach ($file in $group.Group) {
        Write-Host "  $($file.FullName) (size $($file.Length))"
    }
}

basePath fileExtensions を編集すれば各自の用途に応じて利用可能。

chatgptはハッシュ値で似たfileも検出できる的回答をしていたが、それは仕組み的に違うと思うが、同一ファイルなら使える事を確認済み。

丸っと信じられるレベルではないがやっぱり生産性は高い。

ちゃんと真贋を見極める知見さえあれば使える。

以下動作の解説。

2018年6月22日金曜日

MicrosoftのリリースしたOSSテスト自動化ツールWinAppDriver UI Recorder

http://www.atmarkit.co.jp/ait/articles/1806/22/news036.html
率直に言うと上記の記事を読んで、まずこれがどういうものかについて、今一不勉強でよくわからなかったので調べてみた。

ざっくり言うとWebdriverというAPIを用いて自動テストを走らせるためのソフトである、WinAppDriver用のC#のソースコードを、操作を記録して自動生成するツールということになるようだ。

Webdriverというのは、ざっくりいうともともとはSeleniumという、Webに対する自動テストOSSで使われている、JAVAやC#を含む好きなプログラミング言語でテストを記述し、WebdriverAPIを使って、同じテストを
 Linux→Chromeドライバ
 Windows→IEドライバ
 etc...
というような各プラットフォームのドライバ(要するに自動操作を受け付けるためのサーバです)に実行させる仕組み。

このWebdriverの仕組みは前述の通りもともとはWebアプリケーションの自動テストで使われていましたが、現在ではAppiumという名称でAndroidやiOS用のドライバやWindows向けには WinAppDriver等々の各種プラットフォーム向けのドライバーが開発されて、モバイルやアプリケーションの領域まで拡張されてきた。
また、このWebdriverの仕組みはW3Cでも標準化されるなど(https://www.w3.org/TR/webdriver/)テスト自動化ツールではかなり主流といって良い仕組みになっている。

例えば電卓を起動して123+456を計算し、電卓を閉じるという操作を行った場合の出力コードは次のようなものになっているようだ。
// KeyboardInput VirtualKeys="Keys.Command+ "" + Keys.Command"calc"Keys.Return" CapsLock=False NumLock=True ScrollLock=False
Console.WriteLine("KeyboardInput VirtualKeys=\"Keys.Command+ \"\" + Keys.Command\"calc\"Keys.Return\" CapsLock=False NumLock=True ScrollLock=False");
winElem0.SendKeys(Keys.Command+ "" + Keys.Command);
winElem0.SendKeys("calc");
winElem0.SendKeys(Keys.Return);

// KeyboardInput VirtualKeys=""123+456"Keys.Return" CapsLock=False NumLock=True ScrollLock=False
Console.WriteLine("KeyboardInput VirtualKeys=\"\"123+456\"Keys.Return\" CapsLock=False NumLock=True ScrollLock=False");
winElem0.SendKeys("123+456");
winElem0.SendKeys(Keys.Return);

// MouseHover on "表示は 579 です" at (193,2)
Console.WriteLine("MouseHover on \"表示は 579 です\" at (193,2)");
string xp3 = "/Pane[@Name=\"デスクトップ 1\"][@ClassName=\"#32769\"]/Window[@Name=\"電卓 ‎- 電卓\"][@ClassName=\"ApplicationFrameWindow\"]/Window[@Name=\"電卓\"][@ClassName=\"Windows.UI.Core.CoreWindow\"]/Text[@AutomationId=\"CalculatorResults\"][@Name=\"表示は 579 です\"]";
var winElem3 = MyDesktopSession.FindElementByXPath(xp3);
if (winElem3 != null)
{
   //TODO: Hover at (193,2) on winElem3
}
else
{
    Console.WriteLine($"Failed to find element {xp3}");
    return;
}
一見してわかる通り、そのまま使えるケースはよくあるキャプチャ&リプレイ系のツールと同じく、恐らく稀で、現実的にはプログラミング言語によるテストコードの開発を支援するツールという位置づけになりそうだ。

開発プロセスにもよりそうだが、Webdriver回りのフレームワークでは、基本的に開発者がテストコードを作るあるいは、テストコードを先に作ってそれを満たすソフトを開発するというのが想定されているようで、従来こういったキャプチャリプレイ系のツールというのはこれまであまり出てきていない様に見える。

SeleniumではSelenium IDEやSelenium builderというキャプチャ&リプレイツールが存在するものの、あまり活発とは言えない状況に見える。
半ば想像ではあるがこの理由は開発者がテストコードを作るのであれば、基本的にキャプチャツールはそれほど必要ないのと、キャプチャは当然ながらある程度動くプロトタイプが仕上がってからでないと使い物にならないため、開発初期の単体テストやフォーム単位の動作確認等ではあまり役に立たないという事情があるのではないかと思う。
そういった意味では今後、Microsoftがどのくらいこれをメンテナンスし続けていくかは注目に値しそうだ。

※もしご存じの方で理解が違う点があれば、突っ込みいただければ幸いです。

ウェブサイトのURLにおけるトレイリングスラッシュの解釈と有無による動作の違い

インターネットが現代社会におけるコミュニケーションの基盤となっている今日、ウェブサイトのURLはビジネスや個人ブランディングにとって重要な役割を果たしています。URLは単にウェブページへの経路を示すだけでなく、SEO(検索エンジン最適化)においても重要な要素です。この記事では、U...