从远程计算机删除文件

本文关键字:删除 文件 计算机 | 更新日期: 2023-09-27 17:48:50

我正试图从远程计算机中删除一个包含XML文件的目录。我的代码编译和运行良好,但当我在指定的路径中获取XML文件列表时,它不会返回任何内容。我是不是错过了一些许可方面的东西?

我已经在以自己身份登录的计算机和以其他用户身份登录的另一台计算机上运行了它。这两个帐户都可以完全控制包含XML文件的目录。

我使用的是.NET 2.0。

   static void Main(string[] args) {
        string directory, ext = ".xml"; // have tried xml and .xml
        if (args.Length != 1) {
             // do absolutely nothing if we do not exactly 1 argument
        } else {
            Console.WriteLine("Argument accepted.");
            directory = args[0];
            // make sure the directory passed is valid
            if (ValidateDirectory(directory)) {
                Console.WriteLine("Directory is valid.");
                DeleteFiles(directory, ext);
            }
        }
        Console.WriteLine("Done.");
    }
    static bool ValidateDirectory(string d) {
        return Regex.IsMatch(d, @""); // I removed my regex - it validates properly
    }
    static void DeleteFiles(string d, string ext) {
        DirectoryInfo di;
        FileInfo[] fi;
        di = new DirectoryInfo(d);
        fi = di.GetFiles(ext);
        Console.WriteLine("Number of files = " + fi.Length + ".");
        foreach (FileInfo f in fi) {
            try {
                Console.WriteLine(f.FullName);
                f.Delete();
            } catch (Exception ex) {
                // do nothing when there is an exception
                // just do not want it to quit
                Console.WriteLine(ex.ToString());
            }
        }
    }

从远程计算机删除文件

我认为应该使用*.xml而不是简单的.xml。但我也同意Kyralessa的观点,首先在本地机器上进行测试,然后增加跨网络的复杂性。

在DeleteFiles中,您有以下行:

fi=di。GetFiles(ext);

其中ext是您传入的扩展名,我认为它只是".xml"。Get-files正在查找任何名为".xml"的文件。GetFiles使用通配符,我认为这就是您想要做的。在前面加一个星号(*),然后尝试一下。

-Brett

后续:

我需要使用*.xml(应该知道!),现在它可以工作了。

这个网站很棒!

我假设您正在通过网络路径?当你在本地路径上运行程序时,它会失败吗?这行是不是:fi=di。GetFiles(ext);是否返回任何fileInfo对象?

您可能只是有一些小错误,可以通过一些调试来修复。

您传递的参数是什么?您使用的是映射驱动器还是直接引用(即//服务器/文件夹)?

您应该使用Directory.Exists(Directory),而不是ValidateDirectory,只是看看它是否能看到该目录。