2009-04-02 2 views
7

il mio codice è:Out-File -force, indici intermedi non vengono creati

$path = "c:\no-such-dir\00.txt" 
"foo" | Out-File -force -filePath $path 

L'errore:

Out-File : Could not find a part of the path 'C:\no-such-dir\00.txt'

aiuto Out-File -full

For example, Force will override the read-only attribute or create directories to complete a file path, but it will not attempt to change file permissions.

Così sembra che dovrebbe creare "no-such-dir", ma non è così. Che succede?

risposta

6

Come accennato da Micheal, questo sembra un bug (o pubblicità ingannevole!).

EDIT: Inizialmente pensavo che l'operatore ">" funzionasse, ma ho fatto un errore nel mio test. Non lo fa, come ci si aspetterebbe. Tuttavia, è possibile provare a utilizzare nuovo elemento, invece:

new-item -force -path $path -value "bar" -type file 

Non è esattamente la stessa cosa, ma è possibile creare una semplice funzione di fare ciò che si vuole:

function Out-FileForce { 
PARAM($path) 
PROCESS 
{ 
    if(Test-Path $path) 
    { 
     Out-File -inputObject $_ -append -filepath $path 
    } 
    else 
    { 
     new-item -force -path $path -value $_ -type file 
    } 
} 
} 
+0

Sei sicuro che funziona per voi? Sto usando PowerShell v2 e non funziona. – alex2k8

+0

L'ho provato. ma ho commesso l'errore di dimenticare di cancellare la directory intermedia, mi dispiace. – zdan

+0

New-Item funziona perfettamente, grazie! – alex2k8