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 f
dant
(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, f
dalam afile
hasil 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