2018/12/18WSH(JScript)用ファイルライブラリ:FileUtility.jsを作成した時の調査結果です。-※FileSystemObjectは、fsとして記述します。Existsの結果Exists(fs.FileExists/fs.FolderExists)の結果は、ファイルが存在するタイミングでも、ファイルが存在しない結果(false)を返すことがある。このため、Existsの挙動は、IF上のファイルの存在有無であり、内部処理上の存在有無ではない可能性がある。上記の類推は、下記の挙動を確認したためである。ファイルを削除する(Deleteする)ファイルの存在を確認する(Existsする)ファイルの削除を確認する(Existsの結果がfalseである)削除したファイルと同名ファイルへリネームする(Moveする)「既に同名のファイルが存在しています。エラー発生頻度は、一定確率で発生する。そのため、大量に上記操作を繰り返すと、まれに発生する。エラーが発生した、リネーム(Move)を複数回繰り返す同一エラーを繰り返すが、最後には正常(エラーせず)にリネームが成功する。fs.CopyFile/fs.CopyFolder(同期)同期例:巨大ファイルをコピーする。同期例:大量のファイルを含むフォルダをコピーする。fs.MoveFile/fs.MoveFolder(同期)同期例:巨大ファイルをドライブ間移動する。MoveFolderは、MoveFileの動作から推察です。fs.DeleteFile/fs.DeleteFolder(非同期)非同期の確証となる挙動は、再現できませんでした。筆者の環境で大量に処理した場合、削除されていないと思われる動作をすることがまれに発生しました。下記の掲示板の記載を発見したが、信憑性のほどは不明です。システムでボリューム間のフォルダ移動がサポートされている場合だけです。OSの環境依存のようです。筆者環境(Windows10)でMoveFolderは移動不可でした。CopyFolderとDeleteFolderで代用可能です。MoveFileにも同様のメモがありますが、筆者環境(Windows10)でMoveFileは移動可能でした。Windowsの最大パス長(260)最大パス長のファイル/フォルダを処理する場合、エラー発生することがある。最大パス長のファイル/フォルダを処理する場合、エラーが発生する場合がある。fs.GetAbsolutePathName()は、エラーしない。fs.FolderExists()は、ファイル/フォルダがある場合、falseを返す。fs.GetFolder(fullpath).Files.Countは、エラーとなる可能背がある。(以前エラーしたものがエラーしなくなている。Enumerator(fs.GetFolder(fullpath).Files).atEnd()は、エラーとならない。ファイルがある場合でも、trueを返す。