ファイルの更新日時を更新することになり、かつ、ネットワーク接続不可環境でフリーのツールが使えなかったため、
検索したが、情報が見つからず、
結局PowerShellで実施することになったため、公開します。
【1.前準備】
管理者権限でshellを起動※PowerShellでシェルを実行する際は初期状態で変更できない為以下の内容を実行する必要がある。
1.PowerShellのアイコン上で右クリック→管理者権限にて実行
2.起動したPowerShellにて次のコマンドを実行「Set-ExecutionPolicy RemoteSigned」
準備完了
【2.実行方法】
・ファイルの更新日付を変更するには
【3.ファイルの更新日付等を変更】にて決めたファイル名.ps1を実行
PowerShellを起動して、「.\保存したファイル名.ps1 > ログ名.log」
・フォルダの更新日付を変更するには
【4.フォルダの更新日付を変更】にて決めたファイル名.ps1を実行
PowerShellを起動して、「.\保存したファイル名.ps1 > ログ名.log」
※上記を実行することで、作成日時・更新日時・最終アクセス日時を変更することができる。
今回は指定の時間ではなく、もともと存在しているファイル・フォルダの時刻を取得して、
変更したいフォルダ・ファイルに反映させています。
詳細を知りたい方はコメントを頂ければ、回答させていただくかもしれません。
【3.ファイルの更新日付等を変更】
以下の内容を
「任意の名前.ps1」
にて保存する。
---------------------------------
#設定元ディレクトリファイルのタイムスタンプで設定先のファイルのタイムスタンプを更新
#設定元と設定先のファイルパスをセット
$inputPath = "C:\work\powershell\try\moto"
$outputPath = "C:\work\powershell\try\saki"
#設定元ファイルパスより、ファイル情報を全件取得
$fileList = Get-ChildItem $inputPath
#設定元フォルダのファイルが設定先フォルダに存在する場合はタイムスタンプを更新
foreach( $motoFilePath in $fileList) {
#設定先のファイル一覧を取得
$outFileList = Get-ChildItem $outputPath
#設定先のファイル数分確認:ファイル名(のみで判断)が一致する場合はタイムスタンプをセット
foreach( $sakiFilePath in $outFileList) {
if ($sakiFilePath.Name.equals($motoFilePath.Name)) {
#設定元のタイムスタンプを取得
$ctime = [System.IO.File]::GetCreationTime($inputPath + "\" + $motoFilePath.Name)
$wtime = [System.IO.File]::GetLastWriteTime($inputPath + "\" + $motoFilePath.Name)
$ltime = [System.IO.File]::GetLastAccessTime($inputPath + "\" + $motoFilePath.Name)
#取得した時刻で設定先ファイルをセット
[System.IO.File]::SetCreationTime($outputPath + "\" + $sakiFilePath.Name, $ctime)
[System.IO.File]::SetLastWriteTime($outputPath + "\" + $sakiFilePath.Name, $wtime)
[System.IO.File]::SetLastAccessTime($outputPath + "\" + $sakiFilePath.Name, $ltime)
echo 更新ファイル名
$sakiFilePath.Name
echo 作成日時
$ctime
echo 更新日時
$wtime
echo 最終アクセス日時
$ltime
}
}
}
---------------------------------
【4.フォルダの更新日付を変更】
以下の内容を
「任意の名前.ps1」
にて保存する。
---------------------------------
#ディレクトリタイムスタンプ更新シェル
#設定元のディレクトリと設定先のディレクトリをセット
$inputPath = "C:\work\powershell\try\moto"
$outputPath = "C:\work\powershell\try\saki"
#設定元ディレクトリの作成日時と更新日時と最終アクセス日時を取得
$ctime = [System.IO.Directory]::GetCreationTime($inputPath)
$wtime = [System.IO.Directory]::GetLastWriteTime($inputPath)
$ltime = [System.IO.Directory]::GetLastAccessTime($inputPath)
#取得した設定元ディレクトリの作成日時と更新日時と最終アクセス日時を設定先にセット
[System.IO.Directory]::SetCreationTime($outputPath, $ctime)
[System.IO.Directory]::SetLastWriteTime($outputPath, $wtime)
[System.IO.Directory]::SetLastAccessTime($outputPath, $ltime)
---------------------------------
検索したが、情報が見つからず、
結局PowerShellで実施することになったため、公開します。
【1.前準備】
管理者権限でshellを起動※PowerShellでシェルを実行する際は初期状態で変更できない為以下の内容を実行する必要がある。
1.PowerShellのアイコン上で右クリック→管理者権限にて実行
2.起動したPowerShellにて次のコマンドを実行「Set-ExecutionPolicy RemoteSigned」
準備完了
【2.実行方法】
・ファイルの更新日付を変更するには
【3.ファイルの更新日付等を変更】にて決めたファイル名.ps1を実行
PowerShellを起動して、「.\保存したファイル名.ps1 > ログ名.log」
・フォルダの更新日付を変更するには
【4.フォルダの更新日付を変更】にて決めたファイル名.ps1を実行
PowerShellを起動して、「.\保存したファイル名.ps1 > ログ名.log」
※上記を実行することで、作成日時・更新日時・最終アクセス日時を変更することができる。
今回は指定の時間ではなく、もともと存在しているファイル・フォルダの時刻を取得して、
変更したいフォルダ・ファイルに反映させています。
詳細を知りたい方はコメントを頂ければ、回答させていただくかもしれません。
【3.ファイルの更新日付等を変更】
以下の内容を
「任意の名前.ps1」
にて保存する。
---------------------------------
#設定元ディレクトリファイルのタイムスタンプで設定先のファイルのタイムスタンプを更新
#設定元と設定先のファイルパスをセット
$inputPath = "C:\work\powershell\try\moto"
$outputPath = "C:\work\powershell\try\saki"
#設定元ファイルパスより、ファイル情報を全件取得
$fileList = Get-ChildItem $inputPath
#設定元フォルダのファイルが設定先フォルダに存在する場合はタイムスタンプを更新
foreach( $motoFilePath in $fileList) {
#設定先のファイル一覧を取得
$outFileList = Get-ChildItem $outputPath
#設定先のファイル数分確認:ファイル名(のみで判断)が一致する場合はタイムスタンプをセット
foreach( $sakiFilePath in $outFileList) {
if ($sakiFilePath.Name.equals($motoFilePath.Name)) {
#設定元のタイムスタンプを取得
$ctime = [System.IO.File]::GetCreationTime($inputPath + "\" + $motoFilePath.Name)
$wtime = [System.IO.File]::GetLastWriteTime($inputPath + "\" + $motoFilePath.Name)
$ltime = [System.IO.File]::GetLastAccessTime($inputPath + "\" + $motoFilePath.Name)
#取得した時刻で設定先ファイルをセット
[System.IO.File]::SetCreationTime($outputPath + "\" + $sakiFilePath.Name, $ctime)
[System.IO.File]::SetLastWriteTime($outputPath + "\" + $sakiFilePath.Name, $wtime)
[System.IO.File]::SetLastAccessTime($outputPath + "\" + $sakiFilePath.Name, $ltime)
echo 更新ファイル名
$sakiFilePath.Name
echo 作成日時
$ctime
echo 更新日時
$wtime
echo 最終アクセス日時
$ltime
}
}
}
---------------------------------
【4.フォルダの更新日付を変更】
以下の内容を
「任意の名前.ps1」
にて保存する。
---------------------------------
#ディレクトリタイムスタンプ更新シェル
#設定元のディレクトリと設定先のディレクトリをセット
$inputPath = "C:\work\powershell\try\moto"
$outputPath = "C:\work\powershell\try\saki"
#設定元ディレクトリの作成日時と更新日時と最終アクセス日時を取得
$ctime = [System.IO.Directory]::GetCreationTime($inputPath)
$wtime = [System.IO.Directory]::GetLastWriteTime($inputPath)
$ltime = [System.IO.Directory]::GetLastAccessTime($inputPath)
#取得した設定元ディレクトリの作成日時と更新日時と最終アクセス日時を設定先にセット
[System.IO.Directory]::SetCreationTime($outputPath, $ctime)
[System.IO.Directory]::SetLastWriteTime($outputPath, $wtime)
[System.IO.Directory]::SetLastAccessTime($outputPath, $ltime)
---------------------------------
※コメント投稿者のブログIDはブログ作成者のみに通知されます