Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以空格作为参数传递路径_C#_Batch File - Fatal编程技术网

C# 以空格作为参数传递路径

C# 以空格作为参数传递路径,c#,batch-file,C#,Batch File,我在C#中运行一些代码,调用批处理文件,需要传递一个带有空格的路径作为参数,但它不起作用 我尝试在批处理%1、%1、%1、“%1”中以不同的方式调用参数。这些都不管用。同样在我的C代码中,我试图将其转换为字符串,但它也无法工作 C代码 批次代码: echo %1 Pause 当我将参数C:\Program Files\Test作为目录传递时,它将打印“C:\Program”并在空格处停止。 如何获取完整路径?将参数双引号传递,如:“C:\Program Files\Test” 问题是您的参数包

我在C#中运行一些代码,调用批处理文件,需要传递一个带有空格的路径作为参数,但它不起作用

我尝试在批处理%1、%1、%1、“%1”中以不同的方式调用参数。这些都不管用。同样在我的C代码中,我试图将其转换为字符串,但它也无法工作

C代码

批次代码:

echo %1
Pause
当我将参数C:\Program Files\Test作为目录传递时,它将打印“C:\Program”并在空格处停止。
如何获取完整路径?

将参数双引号传递,如:
“C:\Program Files\Test”

问题是您的参数包含空格,因此将其视为两个不同的参数

请尝试以下操作:

string command = @"/c powershell -executionpolicy unrestricted X:\PathToBatch\Run.bat"+ " \""+ argument +"\" ";
System.Diagnostics.Process.Start("cmd.exe", command);
这将在控制台中“写入”以下行:

/c powershell -executionpolicy unrestricted X:\PathToBatch\Run.bat "C:\Program Files\Test"

它使用简单的引号“'”+arg+“'”,并在批处理中将其称为%%1

到目前为止您尝试了什么?您必须使用这样的引号
+“”+argument+“”实际上并没有对此进行测试。只是为了解释一下。当你做
echo“%*”
when I go%*时会发生什么?它显示了一切,但事实是我有6个arg,所以我可能无法使用它。Im我的命令行看起来是这样的:@/c powershell-executionpolicy unrestricted X:\PathToBatch\Run.bat“+”+arg1+”+arg2+”+arg3I已经尝试使用引号太久了为什么使用powershell而不直接运行批处理文件?引入powershell作为中间商会让事情变得更加复杂complicated@Le痛苦,为你的代码设计了一个解决方案。我的观点是,如果你想传递一个包含空格的参数,那么你必须引用它,所以shell也会把它当作一个参数来处理,即使它是quoted@RhonYz检查此问题:这可能会对您有所帮助您是否仍然存在仅打印“C:\Program”的相同问题?是,另外,当我有几个参数时,下一个参数的值为'Files\Test',我不是批处理专家,但通过查看web,唯一可能导致这种情况发生的是忘记命令行上的双引号。尝试在cmd中手动编写它,如:
/c powershell-executionpolicy unrestricted X:\PathToBatch\Run.bat“c:\Program Files\Test”
如果仍然有相同的结果,则批处理有问题。(或者和我一起,但无论如何我想我不能再帮你了)
/c powershell -executionpolicy unrestricted X:\PathToBatch\Run.bat "C:\Program Files\Test"