2016-12-31 11 views
0

OneNoteノートブックの復元を試みていますが、復元プロセスが理想的ではありません。メモのコピーを保存して日付を追加し、毎日複数の場合は番号を付けます。私は最新のファイル(注)をつかみ、それをフォルダに移動し、そのプロセスを使用する代わりに復元することができます。 enter image description here複数のファイルの最新バージョンをコピーするPowershellコマンド

私はgci | select last -1を使用してみましたが、これはディレクトリ全体で最新のファイルを取得するに過ぎません。しかし、私は最新の各ノートが必要です。理想的には、私はコピーを作成し、それが現在のディレクトリ名と一致する別のディレクトリにダンプし、.oneの後のすべてを取り除きますが、ディレクトリ内の各ノート最新バージョンのコピーに満足しています。

+0

'Get-ChildItem | Group-Object {$ _。Name -split '\ .one' | Select -First 1}'、各グループで '-Last 1'を選択します。 –

+0

これは推奨される復元プロセスです[link ](https://support.office.com/en-us/article/Restore-notes-from-a-backup-5daf9cb0-6769-4998-a5de-f044fdd0d831?ui=en-US&rs=en-US&ad=US&fromAR= 1)。 – acruns

+0

ありがとう。私は前のコマンドにその最後の部分 "Select -Last 1"を実装する方法がわかりませんが、これらのファイルのいくつかは日付の後に数字があります。私はそれらが各グループの「最後のもの」になるとは思わない。 「毎日1つ以上の数字がある場合は数字」 – acruns

答えて

0

このスクリプトはあなたを助けることができます。

マティアスの提案を使用して、あなたが何を望むか(各グループの中で最も最近変更されたファイル)を取得することで拡大
$dirPath = "<The directory where the files are located>" 

Get-ChildItem $dirPath | 
    Group-Object { ($_.Name -split '\.one' | Select-Object -First 1) } | 
    Select-Object @{ Name = 'FileName'; Expression = { $_.Name } }, 
        @{ Name = 'LastFileDate'; Expression = { ($_.Group -split ',') | 
     ForEach-Object { [DateTime](($_ -split ' ')[2] -split '\)')[0] } | 
      Sort-Object $_.LastFileDate | 
      Select-Object -Last 1 
    } } | 
    ForEach-Object { "{0}.one (On {1:dd-MM-yyyy}).one" -f $_.FileName, $_.LastFileDate } 
0

、ここであなたのために働く必要があります解決策は次のとおりです。

$grps = Get-ChildItem | Group-Object {$_.Name -split '\.one' | Select -First 1} 
foreach ($group in $grps) { 
    $group.Group | Sort LastWriteTime | Select -Last 1 | Select Name, FullName, LastWriteTime 
} 

あなたはそこにある各ファイルのFullNameプロパティを取得して、それを別の場所のCopy-Itemに使用することができます。

関連する問題