Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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# sony vegas脚本:获取目录路径的问题_C#_Dll - Fatal编程技术网

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

C# sony vegas脚本:获取目录路径的问题,c#,dll,C#,Dll,我想使用Sony vegas 14创建一个带有脚本的盲测试生成器。为此,我必须用C语言编写脚本。 我在C#方面没有太多经验,所以我的问题可能是一个非常基本的问题 要执行脚本,我必须使用库类(.dll)并通过Sony vegas执行脚本。为了方便地测试我的代码,我创建了一个控制台应用程序,在这里我可以尝试我的代码,并可以轻松地在控制台中打印我的代码的功能。 对于我的程序,y需要以字符串形式获取目录中所有子目录的路径 我的问题是下一个。 “Directory.GetDirectories”命令不起作

我想使用Sony vegas 14创建一个带有脚本的盲测试生成器。为此,我必须用C语言编写脚本。 我在C#方面没有太多经验,所以我的问题可能是一个非常基本的问题

要执行脚本,我必须使用库类(.dll)并通过Sony vegas执行脚本。为了方便地测试我的代码,我创建了一个控制台应用程序,在这里我可以尝试我的代码,并可以轻松地在控制台中打印我的代码的功能。 对于我的程序,y需要以字符串形式获取目录中所有子目录的路径

我的问题是下一个。 “Directory.GetDirectories”命令不起作用 当我使用下一个代码检查数组/列表中的内容时,如果我在脚本的控制台应用程序版本中使用它,我会得到一致的结果(我的目录中的子目录数)

string[]dirs=Directory.GetDirectories(myDirectorypath,”,SearchOption.TopDirectoryOnly);//获取目录中的所有目录路径
WriteLine(“数组中的元素数为“+dirs.Length”);
List listdedossier=新列表(目录);//转换列表中的数组
WriteLine(“列表中的元素数为”+listdedossier.Count);
但是当在我的dll项目中粘贴我的代码时,我的数组或列表中不会写入任何内容。我之所以注意到这一点,是因为当我想要打印列表/数组中返回0的元素数时 . 你知道我的代码会发生什么吗


谢谢

您应该查看Microsoft联机文档以了解更多信息。第二个参数应该是要搜索的符合Windows文件名模式的模式。本质上,允许文件名的全部或部分使用
*
作为通配符(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路径名不区分大小写

最后,在编写带有参数的文本时,我强烈建议您使用以下格式:

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

这在字符串本身中使用了一个占位符,该占位符中有一个数值。该数字指示要使用的格式字符串后的参数(0是格式字符串后的第一个参数)。您可以使用任意多个占位符,并在多个位置使用相同的占位符。与使用
+
运算符相比,这是在C#中进行字符串打印的一种更安全的方式,它要求定义一个运算符,该运算符接受字符串和您提供的任何类型。使用占位符时,
WriteLine
将l使用内置的
ToString
方法,该方法是为
对象中的所有类型定义的。占位符将始终有效,而使用
+
仅有时有效。

谢谢您的回答!我尝试用
替换我的
”*”
但当我在sony vegas的目录中使用dll程序时,它不会改变任何东西。GetDirectories在我使用绝对路径时总是给我一个空数组/字符串,所以一般来说这应该不会有问题?打印出您实际传递的目录,并确保它是操作系统的有效路径(例如,如果是Windows,请确保有一个前导驱动器号)。如果打印的路径有效,请检查目录本身以查看是否存在任何内容。我刚刚确认,任何形式的格式错误的路径或不存在的路径都将导致引发异常。因此,请仔细检查您认为从何处读取。如果这不是问题,则您的环境中一定存在异常引起问题的。
Console.WriteLine("The number of elements in your array is {0}", dirs.Length);