EDITED: У меня есть конкретная проблема с robocopy
в PowerShell.
Весь мой код выглядит так:
$yesterday = (Get-Date).AddDays(-1).Date.ToShortDateString()
$ifExistFilesToCopy = (Get-ChildItem *.txt | Where-Object {$_.CreationTime.Date -le $yesterday})
IF ($ifExistFilesToCopy) {
$i=1
DO {
$yesterdayDay = ((Get-Date).AddDays(-$i).Date.ToShortDateString())
$yesterdayFiles = (Get-ChildItem *.txt | Where-Object {$_.CreationTime.Date -eq $yesterdayDay})
IF ($yesterdayFiles) {
& robocopy $PSScriptRoot "$PSScriptRoot\$yesterdayDay" $yesterdayFiles /copyall
}
$i++
} WHILE (!($yesterdayFiles -contains (Get-ChildItem *.txt | Sort CreationTime | select -First 1)))
}
pause
Моя основная проблема: когда я ставлю *.txt
после Get-ChildItem
, robocopy
не копирует файлы .txt, потому что возвращает результат, подобный $yesterdayFiles = ''
, в то время как эта переменная содержит информацию об этих файлах, и я уверен в этом.
Без *.txt
после Get-ChildItem
у меня весь скрипт работает идеально: копирует файлы в разные папки и все работает просто отлично.
Как я уже говорил ранее, он вылетает только тогда, когда я пытаюсь указать расширение файла.
У меня есть 2 файла от 21 июля (file1.txt, file2.txt) и 1 файл от 21 апреля (file3.txt), все в C:\, и в моей консоли появляется ошибка:
ОШИБКА! неверный параметр №3: C:\file1.txt
и после этого еще:
ОШИБКА! неверный параметр №3: C:\file3.txt
Я пытался использовать Get-ChildItem –Include *.txt
, а также пытался указать *.txt
в качестве параметра для robocopy
, но это тоже не сработало. Есть идеи, что случилось?
-Name
дляGet-ChildItem
. Это означает, что возвращаются только имена (string
, а неFileInfo
).string
не имеет свойстваCreationTime
. - person user4003407   schedule 23.07.2015