Windows ファイル操作関係

目次

ファイルハッシュの取得方法

CertUtil [オプション] -hashfile (ファイル名) [HashAlgorithm]

例)setup.exe のハッシュを取得する
dos>certutil.exe -hashfile D:\setup.exe
SHA1 ハッシュ (対象 D:\setup.exe):
47b7f8aa4f6fb110a9d6b19ea28f95d8773c2cb6
CertUtil: -hashfile コマンドは正常に完了しました。

補足

ファイルのタイムスタンプを変更する

PowerShell

sp -path C:\Windows\fonts\EUDC.TTE -n lastwritetime -va $( date '2019/01/01 00:00:00' )


ファイル名が長すぎる/不正な文字を含んでしまったファイルの扱い

以下の様にファイル名が超長くなってしまう、もしくは不正な文字が含まれてしまうと、エクスプローラでは名前を変えることも、移動することも、削除することもできなくなってしまうことがあります。

D:\~長いディレクトリ名~\~長いファイル名~

そんなときは、コマンドプロンプトを開き、Delコマンドでファイル名の前に \\?\ を付けることで、削除することができます。
ディレクトリ名を指定すると、中のファイルがすべて消えますので、ご注意ください。

dos>del "\\?\D:\~長いディレクトリ名~\"
\\?\D:\~長いディレクトリ名~\*、よろしいですか (Y/N)? y
  • 上記の半角バックスラッシュは、半角¥記号と同じです。

参考


巨大なファイルを一瞬で作成する

以下のコマンドで、指定したサイズの新しいファイルを作成することができます。
fsutil file createNew (ファイル名) (サイズ(バイト))

例)1GBのファイルを作成する  
dos>fsutil file createNew D:\Work\test.txt 1073741824
ファイル D:\Work\test.txt が作成されました


小さなファイルを大量に作成する

以下のループ文で必要回数ファイル作成処理を繰り返すことで作成できます。
for /L %i in ( 初期値, 増分, 終了値) ファイル出力コマンド

例)10バイトのファイルを10万個作成する
dos>for /L %i in (1, 1, 100000) do echo abcdefghij > test_%i.txt

参考まで。
当方の環境での所要時間は以下の通りでした。
・ファイル 10万個作成するのに、約132秒
・ファイル 100万個作成するのに、約1772秒(29m 32s)
・ファイル 10万個を削除するのに、約46秒
・ファイル 100万個を削除するのに、約505秒(8m 25s) なお、100万個のファイルが入ったディレクトリをエクスプローラで開くと、Windowsが応答しなくなってしまいますのでご注意ください。
※記事の環境:Windows 10 Pro、CPU:Core i7- 9700K 3.60GHz、Mem:32.0GB、SSD


コマンドの所要時間を測定する

コマンドの実行にかかった時間を測定します。
PowerShell の Measure-Command を使用することで、簡単に測定できます。
PowerShell -Command "Measure-Command {(測定したいコマンド)}"

測定結果は、色々な単位で表示されますが、[TotalSeconds] の値が見やすいでしょうか。

ファイルの削除にかかった時間を測定する。
dos>powershell -Command "Measure-Command {del test_*.txt }"
Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 46
Milliseconds      : 57
Ticks             : 460571566
TotalDays         : 0.00053306894212963
TotalHours        : 0.0127936546111111
TotalMinutes      : 0.767619276666667
TotalSeconds      : 46.0571566    ←これ
TotalMilliseconds : 46057.1566