0

問題 1 を理解しました。質問 2 を参照してください。まだサポートが必要です。質問1の解決策については、私の回答を参照してください

これはコンソール C# ベースのプログラムです

質問1

ディレクトリ作成の作成をループしたい。次の方法を使用してディレクトリを複製しています (今のところ Do の使用は無視してください...デバイスの番号付けを正しく、適切な場所に配置したいだけです)。ここでは、アプリを毎回手動で実行するとします。各実行で次のようにリストの命名と番号付けをしたいのですが、次のようにリストを作成する必要があります...

C:\\ある場所\\デバイス

ロケーション内...

  • デバイス 1 フォルダー内のコンテンツ
  • 中身が入ったデバイス 2 フォルダ
  • 中身が入ったデバイス 3 フォルダ

など...つまり、デバイスの名前を次のインデックスに置き換えるには、ある種のループが必要です

これは使用中のメソッドです...

  • パス - ユーザー経由で読み取ります。たとえば、「D:\\」は D:\\ ドライブの内容を複製します
  • True - 意図したディレクトリだけでなく、サブディレクトリもコピーするためのデフォルト

    DirectoryCopy(path, @"C:\\Custom Location to duplicate to", true);
    

メソッドの実装:

private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs)
    {
        if (Directory.Exists(sourceDirName))
        {
            cancontinue = true;

            DirectoryInfo dir = new DirectoryInfo(sourceDirName);

            //Make an Array of Directories found on The Device
            DirectoryInfo[] dirs = dir.GetDirectories();

            if (!Directory.Exists(destDirName))
            {
                Directory.CreateDirectory(destDirName);
            }
            else
            {

                //Provide a Device Listing. Here is Where I am Stuck

                for (int i = 1; i < 11; i++)
                {
                    if (Directory.Exists(destDirName)) 
                    {
                        destDirName = destDirName + "\\Device\\ " + i.ToString();
                    }
                    else
                    {
                        break;
                    }
                }
                Directory.CreateDirectory(destDirName);
            }

以下は、同じ方法でサブディレクトリをコピーするループです。現在のソリューションでは、次の出力が提供されます...

C:\Custom Location\Devices\Device 1\Contents

そして、デバイス 1 内で 2 番目のデバイスがコピーされ、その中で次のデバイスがコピーされます。

質問2

コピー先のパス、マシン名をカスタマイズしたい (公開目的)

    //This Gets the Name Perfectly + The Added Desired Path Below
    string MachineName = System.Environment.MachineName;
    string DesiredPath = "\\Desktop\\Program\\"; 

    DirectoryCopy(path, @"C:\Users\" + MachineName + DesiredPath, true);

問題 これは、アクセス拒否エラーが発生することです??? 何故ですか?回避策はありますか?

4

2 に答える 2

1

質問1:

for ループは destDirName 変数を上書きすべきではありません:

private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs)
{
    if (Directory.Exists(sourceDirName))
    {
        cancontinue = true;

        DirectoryInfo dir = new DirectoryInfo(sourceDirName);

        //Make an Array of Directories found on The Device
        DirectoryInfo[] dirs = dir.GetDirectories();

        if (!Directory.Exists(destDirName))
        {
            Directory.CreateDirectory(destDirName);
        }
        //Provide a Device Listing. Here is Where I am Stuck

        for (int i = 1; i < 11; i++)
        {
            string tmp =  destDirName + "\\Device\\ " + i.ToString();
            if ( ! Directory.Exists(tmp)) 
            {
                 Directory.CreateDirectory(tmp);
                 // !!!
                 // here apply your function to copy 
                 // from sourceDirName to directory in tmp variable
                 break;
            }
        }
    }
}

質問2

c:\Users\ にディレクトリを作成する権限がないようです。これを管理者として実行してみてください。

于 2013-09-20T21:56:20.327 に答える