🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[Gelöst] Datein Kopieren mit shell("cp...") und Variablen

Alles zur Programmierung im LibreOffice.
Antworten
phreak1n
Beiträge: 10
Registriert: Do 1. Aug 2013, 13:00

[Gelöst] Datein Kopieren mit shell("cp...") und Variablen

Beitrag von phreak1n » Mo 4. Nov 2013, 14:34

Guten Tag,

ich hab hier mal wieder ein für mich schier unlösbares Problem^^ und wolte mal fragen ob Ihr mir vielleicht nen netten Tip geben könntet.

Ich möchte eine Datei, dessen Pfad in der Datenbank gespeichert ist, an einen vorgegebenen Ort kopieren,dazu nehme ich einen Wert aus meiner Datenbank und verändere ihn ("file:///data/test_old/testx1.pdf" zu "/data/test_old/testx1.pdf"), danach setze ich ein "cp " vor und ein " /data/test/" nach dem Pfad in ein String. nach dem "cp" und vor dem Pfad hab ich ein Leerzeichen innerhalb der Anführungszeichen.

Der code sieht so aus:

Code: Alles auswählen

sub copy_file
	oform = thisComponent.drawpage.forms.MainForm.getbyname("SubForm")
	surl = oform.getstring(3)
	oShell = createUnoService("com.sun.star.system.SystemShellExecute")
	dim curl as string
	dim copy0 as string
	dim copy1 as string
	dim copy2 as string
	dim copy3 as string
	curl = Mid(surl(),8)
	copy1 = "cp " 
	copy2 = curl()
	copy3 = " /data/test/"
	copy0 = copy1()&copy2()&copy3()
	print surl()
	print curl()
	print copy0()
	rem	oShell.execute(copy0(),,0)
	rem	oShell.execute(cp,,curl() copy3())
	rem shell(cp,,curl() copy3())
	shell(copy0())
rem	shell("cp /data/test_old/testx1.pdf /data/test") 
end sub
Nun will er einfach nicht kopieren. Benutze ich den shell()-befehl falsch? Den String den ich mir im Makro zusammenbauen will hab ich in der letzten auskommentierten Zeile als ganze normalen text in die shell()-funktion gegeben und das funktioniert. Per "print copy0()" bekomme ich das gleiche angezeigt wie ich in die handgeschriebene Zeile geschrieben hab. Das ding mit der oShell() in dem Makro hab ich ausprobiert, weil die oShell schon in dem Makro das ich als ausgangsbasis für meins benutzt habe, drinne war, funktioniert aber auch nicht.
Hab ebenfals versucht "/usr/bin/cp" statt "cp" oder nur die curl() variable zu nutzen:

Code: Alles auswählen

shell("cp "&curl()&" /data/test/")
auch Hier kein Erfolg, ich verzweifle...

danke fürs lesen, calli
Zuletzt geändert von phreak1n am Di 5. Nov 2013, 13:33, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2538
Registriert: Fr 10. Dez 2010, 10:01

Re: Datein Kopieren mit shell("cp...") und Variablen

Beitrag von karolus » Mo 4. Nov 2013, 17:47

Hallo
Möchtest du nicht lieber arbeiten mit

Code: Alles auswählen

...
file_access = createUnoService("com.sun.star.ucb.SimpleFileAccess")
' evtl zuerst neue[s] Verzeichnis erstellen
' file_access.createFolder(....)
file_access.copy( alter_pfad, neuer_pfad)
...
Karolus
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Datein Kopieren mit shell("cp...") und Variablen

Beitrag von F3K Total » Mo 4. Nov 2013, 17:53

Hi,
da brauchst Du keine Shell, es gibt den Basic Befehl

Code: Alles auswählen

FileCopy(Source, Destination)
Siehe auch hier.

Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

phreak1n
Beiträge: 10
Registriert: Do 1. Aug 2013, 13:00

Re: Datein Kopieren mit shell("cp...") und Variablen

Beitrag von phreak1n » Di 5. Nov 2013, 13:33

Danke Leute, sehr nett von euch.

Hätte nicht gedacht das ich mit LO-Basic direkt aufs Dateisystem zugreifen kann... wieder was gelernt.
Nun kann wieder fröhlich weiter probiert werden, ohne beinahedepressionen.

Danke für die schnelle und kompetente Hilfe, Ihr seid Klasse!
Calli


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten