Get file with specified date

Reference:

  1. DateTime.ParseExact()
  2. System.DateTime ParseExact
  3. PowerShell PowerShell 語法說明/範例教學
  4. Using the Get-ChildItem Cmdlet
  5. Windows PowerShell -Recurse Parameter

Example:

下面這段程式碼是用來取指定目錄裡的特定檔案(在這我們是指定日期)

# $TargetFiles1     : 儲存我們指定日期的所有檔案路徑
# $TargetDir1       : 來源資料夾
# $Extension        : 所要的檔案類型,"*.log", ".txt", ...
# $_.LastWriteTime  : 檔案的時間

$TargetFiles1 = @(Get-ChildItem $TargetDir1 -recurse -include $Extension | Where { ($_.LastWriteTime -ge ([DateTime]::ParseExact($LastDtStr1, 'yyyy/MM/dd', $null))) -and ($_.LastWriteTime -lt ([DateTime]::ParseExact($LastDtStr2, 'yyyy/MM/dd', $null))) } )

Powershell:

1. @

陣列內容的外面應附加 @ 記號。

2. where where 陳述式採用下列語法:

代碼:

cmd1 | where {<測試1 [<連結> 
<測試2>]...}

3.

運算子(不區分大小寫) 意義
-eq 相等
-lt 小於
-gt 大於
-le 小於或等於
-ge 大於或等於
-ne 不相等
-not 邏輯 not (別名為 !)
-and 邏輯 and

4. DateTime.ParseExact() Example:

$provider = New-Object System.Globalization.CultureInfo "en-US"
[DateTime]::ParseExact($line.date, "dd/MMM/yyyy:hh:mm:ss zz00", $provider)

5. -include

For example, the -include and -exclude parameters make it easy to retrieve a specific set of items from a location. Suppose you want information about only the .txt and .log files found in the folder C:\Scripts? That’s easy:

Get-ChildItem c:\scripts\*.* -include *.txt,*.log

6. -recurse

The PowerShell -recurse parameter is used for persuading Get-ChildItem to search subdirectories.

7. PowerShell PipeLine 命令管線

PowerShell 允許您將兩個以上的命令組合成單一自訂命令,而建立所謂的管線作業。在管線中鏈結命令後,命令之間彼此傳遞的資料即為物件。第一個命令會將傳回 的一或多個物件沿管線向下傳遞給第二個命令。第二個命令會先處理這些物件,再將新物件或修改後的物件傳遞給第三個命令。這種情形將持續發生,直到管線 中的每個命令都已執行完成。

若要鏈結命令以組合成單一管線,請依命令的執行順序指定每個命令。命令之間必須 以管線符號 (|)分隔,也就是垂直線。命令的執行順序為由左至右,以單次作業方式 沿管線向下傳遞所需的物件。

以下範例示範如何將命令組合成單一管線:

Get-ChildItem *.txt | where {$_.length -gt 100} | 
        Format-Table name, length

第一個命令 (Get-ChildItem *.txt)從目前工作位置擷取所有的文字檔。此命令將每個檔案的相關資料以物件型式傳遞給第二個命令 (where {$_.length -gt 100})。

第二個命令則擷取這些物件,然後依據 length 屬性來篩選物件。接著此命令會將 length 值大於 100 位元組的每個物件,沿管線向下傳遞給第三個命令 (Format-Table name)。

第三個命令收到這些物件後,將以表格格式顯示檔案 的名稱。

請注意在第二個命令中,length 屬性前面加上了$_變數。這個變數是由 PowerShell 自動建立,用於儲存目前的管線物件。依此推論,您可以使用這個變數呼叫管線物件的屬性 (變數名稱和屬性名稱之間必須以句號分隔)。

results matching ""

    No results matching ""