EDITED: У меня есть специальная проблема с robocopy
в PowerShell.
Мой весь код выглядит следующим образом:Проблема с копией с * .txt файлами
$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' not' FileInfo'). 'string' не имеет свойства' CreationTime'. – PetSerAl
спасибо за ответ, но без '-Name' нет никакой разницы. Он все еще не работает – dmnmlk