2015-04-27 15 views
6

Sto provando a utilizzare PowerShell da C# per creare un nuovo file sul desktop. Nel terminal si dovrebbe fare:C# PowerShell crea un file di testo vuoto sul desktop

cd desktop 
$null >> newfile.txt 

Così sto cercando di fare questo in C# per imitare le precedenti dichiarazioni:

using (PowerShell PowerShellInstance = PowerShell.Create()) 
{ 
    PowerShellInstance.AddScript("cd desktop; $null >> newfile.txt"); 

    PowerShellInstance.Invoke(); 
} 

Questo viene eseguito senza alcuna eccezione, ma il file non viene creato il desktop. Qualcuno può segnalare cosa sto sbagliando con lo AddScript?

EDIT

Sembra che il problema viene dal usando cd e poi il creare in sequenza.

sono stato in grado di farlo funzionare facendo

PowerShellInstance.AddScript("$null >> C:\\users\\me\\Desktop\\newfile.txt"); 

Se qualcuno sa come fare un comando cd seguito da un altro per favore fatemelo sapere.

+0

Giusto per chiarire: in particolare si desidera utilizzare PowerShell per fare questo? Non vuoi invece una soluzione di file C#? – Rup

+1

Sì, sto praticamente testando come fare cose in PowerShell da C# poiché in seguito lo userò per eseguire i comandi git. – Nived

+0

@Nived Spiacente, ma non lo farei mai nella console (reindirizzamento '$ null') per creare un nuovo file. 'Nuovo elemento $ HOME \ Desktop \ nuovofile.txt' –

risposta

1

Per me sembra che il comando cd desktop non funzioni. Se apri una console di PowerShell, il percorso predefinito in cui si apre è C:\Users\user_name\ e molto probabilmente da C# non si apre con quel percorso, piuttosto sta aprendosi con la directory di lavoro come cartella di debug del tuo progetto corrente; [come commentato da @Nived]

Nessun problema con il codice corrente. Basta modificare l'istruzione script qui sotto e dovrebbe funzionare bene

cd C:\Users\user_name\desktop; $null >> newfile.txt 

Con che il codice C# dovrebbe essere qualcosa di simile

using (PowerShell PowerShellInstance = PowerShell.Create()) 
{ 
    PowerShellInstance.AddScript(@"cd C:\Users\user_name\desktop; $null >> newfile.txt"); 

PowerShellInstance.Invoke(); 
} 
+0

Va alla cartella di debug del progetto corrente da cui si sta eseguendo l'avvio. Quindi devi specificare il percorso completo o usare '~' per farlo. – Nived

+0

@Nived, buono a sapersi. Puoi modificare la mia risposta e includere questa informazione se vuoi. – Rahul

+1

In .NET è anche possibile utilizzare elementi come 'Environment.GetFolderPath (Environment.SpecialFolder.DesktopDirectory)' per ottenere il percorso completo della cartella in cui sono presenti gli elementi "Desktop". –

0

È possibile utilizzare le variabili di ambiente per trovare il desktop così.