Você pode ver uma barra invertida dupla em C:\a\a6ile0309.PxP
(pequeno erro) e caracteres supostamente indesejados na saída original (erro grave):
a6ile0309.PxP
↑ ↑ ↑
↓ ↓ ↓
afile0309.txt
O último é causado por especificadores de formato usados incorretamente f
e t
(get-date).AddDays(-4).ToString('afileMMdd.txt')
# ↑ ↑ ↑
Leia Como formatar datas e horários e Formatando números e datas usando o objeto CultureInfo :
-
f
Data e hora completas (data longa e tempo curto)
-
t
, %t
O primeiro caractere no designador AM / PM definido no AMDesignator ou PMDesignator, se houver. Especifique "% t" se o padrão de formato não for combinado com outros padrões de formato.
De fato, f
in afile
resulta no último milissegundo (?) ou tick (?), veja a última nota abaixo. Honestamente, não sei se é possível escapar. Tente o seguinte trecho de código:
'--- 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
Saída :
PS D:\PShell> D:\PShell\SU87865.ps1
--- original ---
a6ile0309.PxP C:\a\a6ile0309.PxP
--- use rather ---
afile0309.txt C:\a\afile0309.txt
Por favor, note que
$filename = 'afile' + (get-date).AddDays(-4).ToString('MMdd') + '.txt'
poderia ser escrito como
$filename = '{0}{1}{2}' -f 'afile' , (get-date).AddDays(-4).ToString('MMdd') , '.txt'
e eu não sei qual notação é melhor ou mais correta ( PowerShellish ).
Observe também a diferença:
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