namespace Videos_umbennen
{
class Program
{
static void Main(string[] args)
{
string path = @"C:\Users\Kamil\Desktop\C# with .Net Programming\";
var myFiles = Directory.GetFiles(path, "*.mp4");
for (int i = 0; i < myFiles.Length; i++)
{
File.Move(Path.GetFileName(myFiles[i]), "video " + i);
}
var newFiles = Directory.GetFiles(path, "*.mp4");
for (int i = 0; i < newFiles.Length; i++)
{
Console.WriteLine(newFiles.GetValue(i));
}
}
}
}
我编写了这段代码,但问题是它只适用于我放置程序.exe
的文件夹,那么如何让.exe
从任何目录中运行?是否有一些方法或某些东西可以表明我在特定的路径中工作?
答案 0 :(得分:3)
这取决于你想要移动它们的位置。目前,您只需将它们放在运行EXE的路径中,因为您没有指定文件夹,因此这是默认设置。
示例:
File.Move(myFiles[i], Path.Combine(path, "video " + i.ToString + ".mp4"));
// Path.GetFileName is not necessary, the path returned from GetFiles is the full path
这会将文件移动到同一目录,但会将文件名更改为video XXX.mp4
简而言之,不要试图改变&#34;操作路径&#34; (如问题标题中所述),而是指定文件移动,读取或其他任何内容的确切位置。不要假设您正在使用哪个目录,除非假设所有内容都来自应用程序目录(仅对记录到文件,检索应用程序部署资源等操作有意义 )
答案 1 :(得分:3)
主要问题是这一行:
File.Move(Path.GetFileName(myFiles[i]), "video " + i);
第二个参数"video " + i
将与当前正在执行的程序相关。您可以使用path
Path.Combine
File.Move(Path.GetFileName(myFiles[i]), Path.Combine(path, "video " + i));
答案 2 :(得分:-1)
你可以Server.MapPath("C:\Users\Kamil\Desktop\C# with .Net Programming\")
返回完整路径,包括服务器上的目录。