首页 新闻 会员 周边 捐助

C# Main(string[] args){ }

0
悬赏园豆:10 [待解决问题]

有这样一个问题:

有一个文本文件,假设 Text 1.txt (文件命名有空格),路径 F:\Test 1.txt

    

如果直接从系统上下文菜单(右键菜单)选择打开方式 - 自己编译的程序,把命令行参数传递到

1 static void Main(string[] args)
2         {
3 
4         }

  程序会把传递过来的字符串参数解析成长度为 2 的数组。

  

  这样的话想要拿到文件路径非常困难。

请问如何解决这一问题?

c#
shitekudasai的主页 shitekudasai | 初学一级 | 园豆:44
提问于:2015-07-17 17:58
< >
分享
所有回答(3)
-4

想办法

爱编程的大叔 | 园豆:30844 (高人七级) | 2015-07-17 18:37
0

传递的时候使用"F:\Test 1.txt"

幻天芒 | 园豆:37207 (高人七级) | 2015-07-17 18:45

 调试的时候,加英语半角双引号,把每个元素用空格隔开,这当然可以。可那只是调试 ok?

 我说的是直接点击文件右键弹出上下文菜单,从那里直接传递命令行参数过来的话,你如何加这个双引号

支持(0) 反对(0) shitekudasai | 园豆:44 (初学一级) | 2015-07-18 08:31

@shitekudasai: 右键上下文菜单是你注册的吧,这个时候,不能做到控制么?

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2015-07-18 08:59

@幻天芒: 没有注册,就是右键打开。跟把文件拖到 .exe 上执行时一样的。我发现在拖放操作的事件里面传过来的参数跟这个问题是一样的。只有文件名有空格,就会被解析成两个字符串。

void xxx_DragDrop(object sender, DragEventArgs e)
{
    string[] fileNames = e.Data.GetData(DataFormats.FileDrop) as string[];
}
支持(0) 反对(0) shitekudasai | 园豆:44 (初学一级) | 2015-07-18 19:15

@shitekudasai: 如果是这样,只能做合并操作了。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2015-07-19 20:57

@幻天芒: 非常困难,因为不可能知道客户打开的是什么格式的文件

支持(0) 反对(0) shitekudasai | 园豆:44 (初学一级) | 2015-07-19 21:10

@shitekudasai: 格式还是存在的哇,都会在args参数里面。因为有空格,才会导致隔开,不过空格的个数,我觉得会是个问题。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2015-07-19 21:13
0

我记得可以给文件名加个双引号,eg :     xx.exe  "Text 1.txt"

Ants | 园豆:208 (菜鸟二级) | 2015-07-20 16:32

请问 具体实现?

支持(0) 反对(0) shitekudasai | 园豆:44 (初学一级) | 2015-07-22 13:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册