Anda dapat melihat backslash berlipat ganda dalam C:\a\\a6ile0309.PxP(kesalahan kecil) dan karakter yang seharusnya tidak diinginkan dalam output asli (kesalahan parah):
a6ile0309.PxP
↑ ↑ ↑
↓ ↓ ↓
afile0309.txt
Yang terakhir ini disebabkan oleh penspesifikasi format yang disalahgunakan fdant
(get-date).AddDays(-4).ToString('afileMMdd.txt')
# ↑ ↑ ↑
Baca Memformat Tanggal dan Waktu serta Memformat Angka dan Tanggal Menggunakan Objek CultureInfo :
f Tanggal dan waktu penuh (tanggal panjang dan waktu singkat)
t, %t Karakter pertama dalam penunjuk AM / PM yang ditentukan dalam AMDesignator atau PMDesignator, jika ada. Tentukan "% t" jika pola format tidak digabungkan dengan pola format lainnya.
Bahkan, fdalam afilehasil untuk bertahan milidetik (?) Atau centang (?), Lihat catatan terakhir di bawah ini. Jujur, saya tidak tahu apakah itu bisa lolos jadi coba cuplikan kode berikut:
'--- 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
Keluaran :
PS D:\PShell> D:\PShell\SU\1187865.ps1
--- original ---
a6ile0309.PxP C:\a\\a6ile0309.PxP
--- use rather ---
afile0309.txt C:\a\afile0309.txt
Harap perhatikan itu
$filename = 'afile' + (get-date).AddDays(-4).ToString('MMdd') + '.txt'
dapat ditulis sebagai
$filename = '{0}{1}{2}' -f 'afile' , (get-date).AddDays(-4).ToString('MMdd') , '.txt'
dan saya tidak tahu notasi mana yang lebih baik atau lebih benar ( PowerShellish ).
Perhatikan juga perbedaannya:
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