Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.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#_.net_.net 2.0_C# 2.0 - Fatal编程技术网

C# 在路径中使用空格安排任务

C# 在路径中使用空格安排任务,c#,.net,.net-2.0,c#-2.0,C#,.net,.net 2.0,C# 2.0,我们正在按程序安排一项任务。但是,要调度的可执行文件可以安装在具有空格的路径中。ie c:\program Files\folder\folder\folder program\program.exe 当我们将此路径作为参数提供给Tasjk调度程序时,它无法启动,因为它找不到可执行文件。它显然需要用引号(“)括起来 我们面临的问题是,即使我们将路径作为参数传递(cmd+“\”+path+“\”)时将其括在引号中,它仍然不包括用于计划任务的路径中的引号 有人知道如何强制在路径中包含引号吗 编辑:回

我们正在按程序安排一项任务。但是,要调度的可执行文件可以安装在具有空格的路径中。ie c:\program Files\folder\folder\folder program\program.exe

当我们将此路径作为参数提供给Tasjk调度程序时,它无法启动,因为它找不到可执行文件。它显然需要用引号(“)括起来

我们面临的问题是,即使我们将路径作为参数传递(cmd+“\”+path+“\”)时将其括在引号中,它仍然不包括用于计划任务的路径中的引号

有人知道如何强制在路径中包含引号吗

编辑:回复评论:

我们也有同样的想法,问题就出在这里。~1格式是基于文件夹的索引,所以如果你有这3个文件夹:

Program Applications
Program Files
Program Zips

那么路径就是:progra~2

现在,如果你说其中有10多个文件夹,那么路径可能是:progr~12

现在,不是说这不是一个可行的解决方案,但是必须对文件夹进行计数以找到正确的文件夹,然后使用索引来构建路径有点麻烦,而且不太干净

我们希望有更好的办法

编辑2:添加了适用的代码段

您要求提供代码:这是我们构建传递给调度程序的Args字符串的方式:

string args = "/CREATE /RU SYSTEM /SC " + taskSchedule + " /MO " + taskModifier + " /SD " + taskStartDate + " /ST " + taskStartTime + " /TN " + taskName + " /TR \"" + taskSource + "\"";

其中taskSource是应用程序的路径。

您可以用progra~1替换程序文件
然后将程序放入文件夹~1(前6个字母和~1),直到有人给出正确答案为止。你能显示代码吗? i、 e.将上述示例中的路径设置为“path”(带引号),然后进行调用

这可能也有帮助

猜测短名称不是一个好方法,因为它是一个实现细节,可以随每个windows版本而更改


如果您需要短名称,只需询问即可:

您似乎正在使用schtasks.exe-我花了更长的时间才找到答案!请提供更多详细信息!:)我用

请尝试以下代码:

string args = "/CREATE /RU SYSTEM /SC " + taskSchedule + " /MO " + taskModifier + " /SD " + taskStartDate + " /ST " + taskStartTime + " /TN " + taskName + " /TR \"\\\"" + taskSource + "\""

它在TR参数值的前面添加了一个\。

将批处理文件放在没有空格的位置


在批处理文件中,运行带有空格的程序命令。

请参阅问题的编辑。这里没有足够的空间来解释。你说的这个任务调度程序是什么?你是如何调用它的?请输入代码。你说的这个任务调度程序是什么?依我看,它似乎在不直接地解析您的有效命令行arg。“那么路径将是:progra~2”-它不必是progra~2。这取决于先创建哪个。一旦创建了它,它就不会改变,即使它可能被分类为其他类型。正确,我只是想简单地解释为什么这可能是一个问题,而不是一个可行的解决方案。感谢链接。实际上,使用短名称格式会引发一些问题。根据链接,文件夹的短名称是在创建时生成的,如果一个文件夹被删除,其他文件夹的短名称不会改变。这意味着我的计算可能是错误的。此外,根据操作系统的安装情况,可能不会生成短名称,这将导致失败,因为找不到可执行文件。这比我想象的还要糟糕。谢谢你的链接。但是,我们可能会遇到这样的情况:“当应用程序调用此函数并在不支持8.3别名的卷上指定路径时,如果路径长度超过67字节,该函数将失败,并出现错误\u INVALID\u参数。”是的,重命名可执行文件是解决简单问题的简单方法。当某些事情发生变化时,它会增加一定程度的复杂性和混乱,但你打算怎么做?我不主张重命名任何可执行文件。只需创建一个新的单行批处理文件。你甚至可以在上面加上评论来解释情况。谷歌是你的朋友。谷歌第一,所以第二。:)这可能会更明显地表现为string.Format(@“”)。我喜欢string.Format()。首先是Google,其次是SoftwareEdi thirdWell,我可以发誓我们用这种方式尝试过,但是我们没有,我们已经两次转义引号,我们也没有添加转义字符。FWIW,这个链接没有你的答案那么有用,所以我认为第一个是这样的,谷歌第二个。这就是为什么如此创建,所以我们得到了有意义的有针对性的答案。再次感谢!