[英]C# How to get full path of network file?
右键单击pdf文件后,从上下文菜单中运行该程序,它只是将“ \\ CALL OFF”添加到所选文件中,即使在有空格的情况下,程序在本地也可以正常运行。 当在我的nas上的文件中运行时,其中路径包含空格,GetCommandLineArgs的输出在第一个空格处停止。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string[] args = System.Environment.GetCommandLineArgs();
textBox1.Text = args[1];
}
private void button2_Click(object sender, EventArgs e)
{
ProcessStartInfo start = new ProcessStartInfo();
start.Arguments = "-add-text \"/ CALL OFF\" -font \"Helvetica-Bold\" -font-size 14 -pos-left \"194 776\" " + textBox1.Text + " -o out.pdf";
start.FileName = "cpdf";
Process.Start(start);
}
}
字符串加入所有的命令行参数重新走到一起,利用空间分隔成一个字符串,并用其作为论据。 在start.Arguments
使用时,还需要在textBox1.Text
周围添加双引号,以确保将其作为一个接收:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string[] args = System.Environment.GetCommandLineArgs().Skip(1).ToArray();
textBox1.Text = String.Join(" ", args);
}
private void button2_Click(object sender, EventArgs e)
{
ProcessStartInfo start = new ProcessStartInfo();
start.Arguments = "-add-text \"/ CALL OFF\" -font \"Helvetica-Bold\" -font-size 14 -pos-left \"194 776\" "
+ "\"" + textBox1.Text + "\"" + " -o out.pdf";
start.FileName = "cpdf";
Process.Start(start);
}
}
您需要将路径名用引号引起来,并添加\\"
:
string quoted = "\"" + textBox1.Text + "\"";
要得到:
start.Arguments = "-add-text \"/ CALL OFF\" -font \"Helvetica-Bold\" -font-size 14 -pos-left \"194 776\" \"" + textBox1.Text + "\" -o out.pdf";
如果要将其作为命令行参数传递给程序,则也需要在其中引用它:
myExe -file "Long path with spaces\file.pdf"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.