Laden...

Kopieren unter CF2

Erstellt von dimuwe vor 13 Jahren Letzter Beitrag vor 13 Jahren 974 Views
D
dimuwe Themenstarter:in
168 Beiträge seit 2005
vor 13 Jahren
Kopieren unter CF2

Hallo,
ich habe folgendes Problem auf einem Mobile CE CF2 Gerät.
Ich kopiere in einem Konsolenprogramm ein verzeichnis in ein anderes.
Wenn ich es debuge, funktioniert es. Wenn ich es von der cmd aufruge nicht.
Argumente für debug:
"Storage Card\Test" "Onboard Flash\Temp"
und so in der cmd:
test.exe "Storage Card\Test" "Onboard Flash\Temp"


CopyDirectory(args[0],args[1]);

in der Funktion ist dann der Create, und Copy Befehl u.s.w.


static void CopyDirectory(string Source, string Dest)
{....
if(!Directory.Exists(Dest)) 
{
Directory.CreateDirectory(Dest);
}
file.CopyTo(Path.Combine(Dest, file.Name), true);

Kann mir jemand sagen was ich vielleicht bei der schreibweise in der cmd falsch mache?

Besten Dank
dimuwe

5.742 Beiträge seit 2007
vor 13 Jahren

Hallo dimuwe,

lasse dir testweise mal die Argumente einfach ausgeben.

Auch kann es sehr hilfreich sein, Exceptions in der Main generell abzufangen (mit einem Programmweiten catch-Clause) und dann die gefangene Exception auszugeben.

Ein "Wenn ich es von der cmd aufruge nicht." ist nämlich keine wirklich hilfreiche Beschreibung.

D
dimuwe Themenstarter:in
168 Beiträge seit 2005
vor 13 Jahren

Danke winSharp93 für die Antwort.
die Fehlerausgabe: File not found
ich rufe das Prog aber mit einer batch auf und die liegt im gleichen Verzeichnis.


static void CopyDirectory(string Source, string Dest)
{
	try
	{
		DirectoryInfo directoryInfo = new DirectoryInfo(Source);
		// Create destination directory
		if(!Directory.Exists(Dest)) 
		{
			Directory.CreateDirectory(Dest);
		}
		// Get all files in the current directory
		FileInfo[] files = directoryInfo.GetFiles();

		// Iterate all files
		foreach(FileInfo file in files) 
		{
			bool copy = true;
			if(copy) 
			{
				// Copy the file to the destination
				file.CopyTo(Path.Combine(Dest, file.Name), true);
			}
		}
		// Iterate all directories in the current directory
		// and use recursion
		DirectoryInfo[] directoryInfos = directoryInfo.GetDirectories();
		foreach(DirectoryInfo dirSub in directoryInfos) 
		{
			bool copy = true;
			if(copy) 
			{
				// Copy directory
				CopyDirectory(dirSub.FullName, Path.Combine(Dest, dirSub.Name));
			}
		}
	}
	catch(ArgumentException) 
	{
		throw;
	}
	catch(Exception ex) 
	{
		throw new IOException(ex.Message, ex);
	}
}

5.742 Beiträge seit 2007
vor 13 Jahren

Gib mal in beiden Fällen (Debug und Release via Batch) Environment.CurrentDirectory aus.

Die Pfade sehen eher relativ als absolut aus, oder (kA wie das unter WinMobile ist)?
Probiere es mal mit absoluten Pfaden.

Aber lasse dir die Pfade doch mal vor dem eigentlichen Zugriff anzeigen.

Oder teste mal, statt dem Programm die Batchdatei mit dem VS-Debugger aufzurufen.

F
10.010 Beiträge seit 2004
vor 13 Jahren
file.CopyTo(Path.Combine(Dest, file.Name), true);

Sicher das in file.Name nicht der Sourcename incl Verzeichnis steht?

Schonmal versucht den Debugger zu benutzen.

D
dimuwe Themenstarter:in
168 Beiträge seit 2005
vor 13 Jahren

vielen Dank für die Antworten.

Aber ich habe herausgefunden, dass mann auf dem CE Gerät so etwas wie folgt nicht in eine Batchdatei schreiben kann.
Storage Card\CF1copy\CF1copy.exe "Storage Card\Data" "Onboard Flash\Test"
selbst wenn man den Aufruf in Hochkomme setzt geht es nicht.
ich habe mir von der exe Datei einen Shortcut gemacht dort dei Parameter hinzu und es funktioniert.

Vielen Dank
dimuwe