sony vegas脚本:获取目录路径的问题。

问题描述 投票:-1回答:1

我想用Sony vegas 14的脚本创建一个盲测生成器。为此,我必须用C#来制作我的脚本,我在C#方面没有太多经验,所以可能我的问题是一个非常基本的问题,我必须使用库类(.dll)来制作我的脚本,并通过Sony vegas来执行我的脚本。

为了完成我的脚本,我必须使用一个库类(.dll)并通过Sony vegas执行我的脚本。为了方便地测试我的代码,我创建了一个控制台应用程序,在那里我尝试我的代码,并可以很容易地在控制台打印我的代码做什么.对于我的程序,y需要得到的所有子目录的路径在一个字符串的目录。

我的问题是下一个.命令 "Directory.GetDirectories "不工作当我使用下一个代码来检查我的数组列表中的内容时,我得到了一个连贯的结果,如果我在我的脚本上使用它的控制台应用程序版本(我的目录中的子目录数量)

string[] dirs = Directory.GetDirectories(myDirectorypath, "", SearchOption.TopDirectoryOnly);// get all directory path in dirs


            Console.WriteLine("the number of element in your array is "+ dirs.Length);

            List<string> listdedossier = new List<string>(dirs); // convert the array in a list
            Console.WriteLine("the number of element in your list is " + listdedossier.Count);

但是,当把我的代码粘贴到我的dll项目中时,我的数组或列表中没有任何内容。我注意到这一点,因为当我想打印列表数组中的元素数时,返回我0.你有什么想法,我的代码发生了什么?

谢谢

c# dll
1个回答
0
投票

你应该检查在线的微软文档 GetDirectories. 第2个参数应该是一个符合Windows文件名模式的搜索模式。基本上,一个文件名的全部或部分可以用 * 作为通配符(The .* 来自于regex,意思是 "匹配任意次数的字符")和 ? 作为一个单字符通配符(regex .). 你提供的是一个空字符串,所以你什么也得不到。该模式 *.exe 将匹配文件夹中的所有可执行文件(如果您使用的是 GetFiles而模式 pattern* 匹配任何以 pattern. 如果你想要所有的目录,就这样做。

string[] dirs = Directory.GetDirectories(myDirectoryPath, "*", SearchOption.TopDirectoryOnly);

下一点,你提供的路径可以是相对路径(例如 "relative\path\to\folder"),也可以是绝对路径(例如 "D:\path\to\folder"),或者是完全限定域名(FQDN,例如"\servername.gov.edu.com\drive$path\to\folder")。如果您提供了一个相对路径,您需要查找 Windows 的路径解析规则。使用相对路径很容易搜索到错误的文件夹,甚至是一个不存在的位置(尽管在这种情况下你应该得到一个异常)。另外,请记住:Windows的路径名不分大小写。Windows的路径名是不区分大小写的。

最后,当编写带有参数的文本时,我强烈建议你使用这种格式。

Console.WriteLine("The number of elements in your array is {0}", dirs.Length);

这在字符串中使用了一个占位符,里面有一个数字值。数字表示要使用格式字符串后的参数(0是格式字符串后的第一个参数)。你可以使用任意数量的占位符,并且在多个位置使用同一个占位符。这是在C#中进行字符串打印的一种更安全的方式,比使用 + 操作符,这需要定义一个操作符,该操作符接受一个字符串和你提供的任何类型。当你使用占位符时。WriteLine 将使用内置的 ToString 中的所有类型定义的方法。Object 类。占位符将 始终 工作,而使用 + 只是有时会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.