2017-02-28 3 views
1

Meine Codierung in C# unter: -Wie übergibt man einen vollständigen Windows7-Namen?

private void button3_Click(object sender, EventArgs e) 
{ 
    string filePathWithoutQuotes = "J:\\DataSource\\歌音楽\\Ver1\\夜霧の第二国道(カラオケ)フランク永井 (u6quC2KQNHw)(本人出演).mp4"; 
    // case 1: 
    System.Diagnostics.Process.Start("C:\\Users\\Frank\\Downloads\\動画再生\\Qonoha\\qonoha20203\\qonoha\\Qonoha.exe", 
     filePathWithoutQuotes); 
    // case 2 
    System.Diagnostics.Process.Start("C:\\Users\\Frank\\Downloads\\動画再生\\Qonoha\\qonoha20203\\qonoha\\Qonoha.exe", 
     @"""J:\\DataSource\\歌音楽\\Ver1\\夜霧の第二国道(カラオケ)フランク永井 (u6quC2KQNHw)(本人出演).mp4"""); 
} 

Fall 2: Der Name Win7 fullpath geben richtig und die Videodatei wird durch den Video-Player namens Qonoha gespielt und geöffnet. Dies ist nur ein Kontrolltest, um sicherzustellen, dass die Reste der Programmierung korrekt ausgeführt werden.

Fall 1: Die gleiche Videodatei wurde nicht ordnungsgemäß übergeben, da die Videodatei nicht wiedergegeben oder geöffnet wurde.

Antwort

0

Ich sehe in Fall 2 Sie den vollständigen Namen in Anführungszeichen setzen (@"""J:\....mp4"""), während in Fall 1 nicht (aaa = "J:\....mp4"). Obwohl ich bezweifle, dass diese Lösung so offensichtlich ist, aber haben Sie versucht aaa = @"""J:\....mp4"""?

0

Es sieht so aus, als ob das Tool den Dateipfad in Anführungszeichen erwartet (was in Fällen, in denen der Pfad Leerzeichen enthält, durchaus üblich ist).

Ihr zweiter Fall gibt explizit Anführungszeichen um den Wert an: @"""x""" ist String-Literal für x in Anführungszeichen. Der Wert für den ersten Fall gibt nur "x" an und enthält daher keine Anführungszeichen.

0

Wenn Ihr Dateiname Leerzeichen enthält, wird Process dies als einen anderen Befehl betrachten.

In der Befehlszeile, wenn Sie Befehlsargumente direkt ohne Anführungszeichen übergeben "", wird es es als einen anderen Befehl betrachten, wenn es Leerraum enthält.

In Ihrem Fall 1 passierte genau das gleiche.

Verwandte Themen