有这样一个问题:
有一个文本文件,假设 Text 1.txt (文件命名有空格),路径 F:\Test 1.txt
如果直接从系统上下文菜单(右键菜单)选择打开方式 - 自己编译的程序,把命令行参数传递到
1 static void Main(string[] args) 2 { 3 4 }
程序会把传递过来的字符串参数解析成长度为 2 的数组。
这样的话想要拿到文件路径非常困难。
请问如何解决这一问题?
想办法
传递的时候使用"F:\Test 1.txt"
调试的时候,加英语半角双引号,把每个元素用空格隔开,这当然可以。可那只是调试 ok?
我说的是直接点击文件右键弹出上下文菜单,从那里直接传递命令行参数过来的话,你如何加这个双引号
@shitekudasai: 右键上下文菜单是你注册的吧,这个时候,不能做到控制么?
@幻天芒: 没有注册,就是右键打开。跟把文件拖到 .exe 上执行时一样的。我发现在拖放操作的事件里面传过来的参数跟这个问题是一样的。只有文件名有空格,就会被解析成两个字符串。
void xxx_DragDrop(object sender, DragEventArgs e) { string[] fileNames = e.Data.GetData(DataFormats.FileDrop) as string[]; }
@shitekudasai: 如果是这样,只能做合并操作了。
@幻天芒: 非常困难,因为不可能知道客户打开的是什么格式的文件
@shitekudasai: 格式还是存在的哇,都会在args参数里面。因为有空格,才会导致隔开,不过空格的个数,我觉得会是个问题。
我记得可以给文件名加个双引号,eg : xx.exe "Text 1.txt"
请问 具体实现?