Вы можете увидеть двойную обратную косую черту в C:\a\\a6ile0309.PxP (небольшая ошибка) и предположительно нежелательные символы в исходном выводе (серьезная ошибка):
a6ile0309.PxP
↑ ↑ ↑
↓ ↓ ↓
afile0309.txt
Последнее вызвано неправильно используемыми спецификаторами формата f
и t
(get-date).AddDays(-4).ToString('afileMMdd.txt')
# ↑ ↑ ↑
Прочитайте форматирование даты и времени и форматирование чисел и дат с помощью объекта CultureInfo:
f
Полная дата и время (длинная дата и короткое время)
t
, %t
Первый символ в обозначении AM/PM, определенный в AMDesignator или PMDesignator, если есть. Укажите «% t», если шаблон формата не объединен с другими шаблонами формата.
Фактически, f
в afile
приводит к длине миллисекунды (?) или отметьте (?), см. последнее примечание ниже. Честно говоря, я не знаю, можно ли его избежать, поэтому попробуйте следующий фрагмент кода:
'--- original ---'
$path = "C:\a\"
$filename = (get-date).AddDays(-4).ToString('afileMMdd.txt')
$fileexisting = "$path\$filename"
$destfolders = "C:\b\", "C:\c\"
Write-host $filename, $fileexisting -ForegroundColor Yellow
### next WHILE never ends
### while(!(Test-Path $fileexisting)) {Start-Sleep 5}
'--- use rather ---'
$path = "C:\a\"
$filename = 'afile' + (get-date).AddDays(-4).ToString('MMdd') + '.txt'
$fileexisting = Join-Path $path $filename
$destfolders = "C:\b\", "C:\c\"
Write-host $filename, $fileexisting
Выход:
PS D:\PShell> D:\PShell\SU\1187865.ps1
--- original ---
a6ile0309.PxP C:\a\\a6ile0309.PxP
--- use rather ---
afile0309.txt C:\a\afile0309.txt
Обратите внимание, что
$filename = 'afile' + (get-date).AddDays(-4).ToString('MMdd') + '.txt'
может быть написано как
$filename = '{0}{1}{2}' -f 'afile' , (get-date).AddDays(-4).ToString('MMdd') , '.txt'
и я не знаю, какая запись лучше или правильнее (PowerShellish).
Также обратите внимание на разницу:
PS D:\PShell> (get-date).ToString("yyyy-MM-dd-HH.mm.ss.ffffff") # six f
2017-03-13-22.23.35.897305
PS D:\PShell> (get-date).ToString("yyyy-MM-dd-HH.mm.ss.fffffff") # seven f
2017-03-13-22.30.08.4030682
PS D:\PShell> (get-date).ToString("f")
13 March 2017 22:23
PS D:\PShell> (get-date).ToString("ff")
20