Confessions of a Dangerous Mind

Brain.FlushBuffer()
posts - 83, comments - 151, trackbacks - 325

La funzione GetCommandLineArgs ed il parsing degli argomenti

Oggi un mio collega, Sebastiano, mi ha fatto notare un problema che affligge la funzione System.Environment.GetCommandLineArgs(). Questa funzione, peraltro molto utile, ritorna in un'array di stringhe la lista dei parametri della riga di comando di un eseguibile. In un caso, però, bisogna prestare un pò di attenzione, in quanto se si passano argomenti di tipo "percorso", ovvero del tipo C:\MyFolder\ si può incorrere in un banale errore.

Per ricrearlo basta crere un piccolo esempio di console application ed impostare come parametri della command line:

  • MySimpleConsoleApp.exe par1 par2 "C:\My Folder\AnotherFolder\Destination\" par3

Gli apici di delimitazione devono essere inseriti, in quanto nel percorso è presente uno spazio, ma... c'è un ma! La funzione GetCommandLineArgs() ritornerà i seguenti parametri:

  • MySimpleConsoleApp.exe
  • par1
  • par2
  • C:\My Folder\AnotherFolder\Destination" par3

Sì, avete letto bene...l'ultimo parametro è "sbagliato" in quanto l'accoppiata \" viene considerata un'escape di ". Il problema è facilmente risolvibile operando un raddoppio dell'ultima barra "\\" ma comunque occhi aperti quando avete a che fare con percorsi come parametri di riga di comando.

Print | posted on giovedì 13 luglio 2006 18.07 |

Feedback

Gravatar

# re: La funzione GetCommandLineArgs ed il parsing degli argomenti

se prima del path metti @ dovrebbe andare

MySimpleConsoleApp.exe par1 par2 @"C:\My Folder\AnotherFolder\Destination\" par3
13/07/2006 18.57 | Daniele
Gravatar

# re: La funzione GetCommandLineArgs ed il parsing degli argomenti

Già provato; il risultato è che l'ultimo parametro viene estratto come:
@C:\My Folder\AnotherFolder\Destination" par3
14/07/2006 0.32 | Davide Senatore

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 8 and 5 and type the answer here:

Powered by: