Skripte mit DOS Befehlen?

Aktuelle Version: 12.18 (20.11.2019)
Alles zum Thema Directory Opus
Antworten
Maui
Beiträge: 63
Registriert: 7. Mär 2019 19:37
Betriebssystem: Windows 10 Pro
Produkt: Opus 12
Version DOpus: Pro

Skripte mit DOS Befehlen?

Beitrag von Maui » 15. Apr 2019 08:54

Mittlerweile habe ich gelesen das Skripte mit VBS und JS erstellt werden können.
Da ich weder das eine noch das andere beherrsche, würde ich gerne wissen ob man auch DOS Befehle verwendet werden können? Diese beherrschen ja auch einige Befehle zur Dateiverwaltung.
Aktuell überlege ich mir, wie ich Dateiendungen aller Dateien in einem Verzeichnis in eine Textdatei schreiben kann?
Danke
Ma

Benutzeravatar
tbone
Berater
Beiträge: 572
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64
Produkt: aktuelle Beta-Version
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von tbone » 15. Apr 2019 11:58

Ja DOS-Befehle gehen auch. o)
Und dann noch die DO-Befehle, und beide mischen kannst Du auch! o)

Benutzeravatar
Nobmen
Boardbetreuer
Beiträge: 2008
Registriert: 26. Jun 2004 08:48
Betriebssystem: Win 10 Home/Pro 32/64bit
Produkt: DOpus 12.x + Betas
Version DOpus: Pro
Kontaktdaten:

Re: Skripte mit DOS Befehlen?

Beitrag von Nobmen » 15. Apr 2019 14:59

benutze extras -> ordnerliste drucken/ exportieren

Maui
Beiträge: 63
Registriert: 7. Mär 2019 19:37
Betriebssystem: Windows 10 Pro
Produkt: Opus 12
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von Maui » 16. Apr 2019 08:58

Danke,
ich denke so einfach wird das nicht, da ich die Dateiendungen nur einmal in der Textdatei haben möchte, muss das schon geprüft und am ende sortiert werden.
Ich habe sowas schon mal mit Shellprogrammierung realisiert.

Benutzeravatar
tbone
Berater
Beiträge: 572
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64
Produkt: aktuelle Beta-Version
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von tbone » 16. Apr 2019 11:45

NImm JScript, das kommt mit Windows mit, ist zu 99% identisch mit (älterem) Javascript und das angeeignete Wissen kannst Du somit überall immer wieder anbringen da Javascript nun mehr oder weniger überall zu finden ist.

Dazu einen Texteditor (Editplus,Notepadd++), der das Script vll auch gleich ausführen kann und dann kannst Du losprobieren.
Innerhalb DO mit dem Scripting zu starten empfehle ich nicht, das ist nur eine unnötige weitere Hürde am Anfang.
Ist Dein externes *.js Script fertig, kannst Du es direkt in DO einbinden oder so anpassen, dass es DO-intern lebt (in einem Button z.B.).

Ein einfaches JScript sieht z.B. so aus:

Code: Alles auswählen

WSH.Echo("Hello World");
Diese Zeile packst Du in eine Datei namen "Hello.js" und führst Sie auf der Kommandozeile (oder über Deinen Editor) mit..

Code: Alles auswählen

cscript.exe Hello.js
..aus. Fertig ist die "Entwicklungstestundübungsumgebung". o)

Zum Thema Dateinamen/Verzeichnisse einlesen, das macht man in JScript mit dem "Scripting.FilesystemObject", Beispiele dazu findest Du im Netz zu Hauf. Bei der Suche über die Suchmaschine mit dem höchsten Misstrauen empfehle ich manchmal "-javascript" mit in den SuchString einbauen, dann findest Du eher relevante Links zum Thema "JScript". Javascript bezogene Links müssen aber nicht falsch oder verkehrt sein, kommt drauf an was Du in dem entsprechenden Moment suchst. Windows- und OS-spezifische Sachen, das sollte dann JScript sein, willst Du mehr über Sprach-Syntax und Interna wissen, dann ist Javascript auch ok. Ab Javascript 5/6 gibt es allerdings einige Unterschiede zu JScript, am Anfang solltest Du über diese aber nicht stolpern.

Maui
Beiträge: 63
Registriert: 7. Mär 2019 19:37
Betriebssystem: Windows 10 Pro
Produkt: Opus 12
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von Maui » 16. Apr 2019 14:36

Danke für die ausführliche Information.
Material zu JavaSricpt habe ich genug, auch beim lernen von anderen Sprachen bin ich oft über JavaScipt gestolpert, habe mich aber nie damit befasst, weil es die Situation nicht erforderte.

Aktuell bin ich total überlastet und habe mir mittlerweile DO zugelegt um alles schneller abwickeln zu können. Meine NAS mit mit 10 Festplatten und einen iMac mit 6TB Daten sind vom Blitz geschrottet worden. Jetzt muss ich Dateien Rücksichern und dabei gibt es unmengen von Duplikaten und Restdaten. Das Kopieren dauert ewig und sind auch schon seit ein paar Wochen auf neuer Hardware am werkeln. Einfach nur Rücksichern ist auch leider nur die halbe Miete. Das Arbeiten mit Virtuellen Maschienen ist zwar in Ordnung, aber manchmal recht Zäh im Arbeitsablauf.

Daher möchte ich mir eine Funktion bauen die folgendes macht:
1. Leere Ordner vom Quell -und Zielverzeichnis löschen
2. Duplikate über den Inhalt finden und von der Quelle LÖSCHEN wenn diese im Zielverzeichnis enthalten oder von der Quelle älter sind.
3. Daten vom Quellverzeichnis ins Zielverzeichnis VERSCHIEBEN, wenn diese im Zielverzeichnis nicht enthalten sind.
4. Erneut auf Leere Ordner prüfen und entfernen.

Somit sollte das Quellverzeichnis nach Fertigstellung leer sein.
Aktuell mache ich das zur Zeit von Hand mit den Tools.

1. Suche nach Ordner die genau 0 kb groß sind
2-3. Synchronisiere Quelle mit Ziel mit DO, aber auch mit FreeFileSync.
4. Lösche das Quellverzeichnis

Bei diesem Verfahren habe ich manchmal Bauchschmerzen, da es vorkommt das Dateien im quellverzeichnis aus irgendwelchen Gründen nicht zum Ziel kopiert werden. Ich habe das oft mit FreeFileSync gegen geprüft und habe festgestellt das DO nicht immer richtig synchronisiert :(

Mit DO tue ich mich immer noch besonders schwer, Dateien bei Duplikaten zu löschen, die gezielt von der Quelle sind. DO behält einfach immer die erste Datei und markiert alle anderen zum löschen. Die zu behaltene Datei kann mal vom Ziel oder von der Quelle sein, was oft ein Durcheinander verursacht.

Ma

Benutzeravatar
tbone
Berater
Beiträge: 572
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64
Produkt: aktuelle Beta-Version
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von tbone » 16. Apr 2019 14:50

DO ist in diesem Fall dann (noch) nicht das richtige Werkzeug für die Aufgabe.
In so einem Hardcore-Fall muss wohl erstmal wirklich noch die speziellere Sync-Software ran.

Mit dem Thema Sync sind wir hier offtopic, aber vll noch ein kleiner Tip dazu, für Syncs über Scripting oder auch per DO (über Button eingebunden), nehme ich robocopy.exe, das kommt mit Windows mit, hat zwar kein GUI, aber dafür relativ viele Schalter um ziemlich genau einstellen zu können, was man kopieren/synchronisieren bzw. spiegeln will - kost nix.

Hier ist mein ButtonCode dazu:

Code: Alles auswählen

<?xml version="1.0"?>
<button backcol="none" display="both" label_pos="right" textcol="none">
	<label>Synchronize (Robocopy)</label>
	<tip>Synchronize (Robocopy)</tip>
	<icon1>#syncpane</icon1>
	<function type="batch">
		<instruction>//ms-dos type to make modifier @leavedoswindowopen work</instruction>
		<instruction>@leavedoswindowopen </instruction>
		<instruction />
		<instruction>Confirm MSG=&quot;Synchronize (mirror to destination) with Robocopy?\n\nfrom:\n{sourcepath$} \n\nto:\n{destpath$} &quot; TITLE=Robocopy.exe</instruction>
		<instruction>Robocopy.exe {sourcepath$} {destpath$} /V /E /NP /R:0 /W:0 /COPYALL /PURGE /DCOPY:T</instruction>
		<instruction />
		<instruction>// /home/dopusrt.exe /argsmsgbox &quot;{sourcepath$|noterm}&quot; &quot;{destpath$|noterm}&quot;</instruction>
	</function>
</button>
Du brauchst noch dieses DO-Addin: https://www.haage-partner.de/forum/view ... =45&t=4926
Oder kommentierst den "Confirm.. " Teil aus.

Maui
Beiträge: 63
Registriert: 7. Mär 2019 19:37
Betriebssystem: Windows 10 Pro
Produkt: Opus 12
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von Maui » 16. Apr 2019 16:21

Danke für den Button :)
Werde mir diesen heute Abend mit robocopy genauer ansehen.
Ma

Maui
Beiträge: 63
Registriert: 7. Mär 2019 19:37
Betriebssystem: Windows 10 Pro
Produkt: Opus 12
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von Maui » 22. Apr 2019 00:38

Hallo,
ich habe es nicht geschafft diese Funktion zu integrieren.
Ich habe einen Button hinzugefügt und den Code unter erweitert eingegeben.
Es kam eine Meldung das Code aus dem Web so nicht integriert werden sollen?
Ich habe aber nicht verstanden wie das sonst anders gemacht werden soll.
Es wurde geschrieben das der Code direkt in die Menüleiste integriert werden soll???

Dann noch zu diesem zusätzlichen Add in?
da gibt es 3 Dateien?
Aktuelle Version, Fixes und Initial Version?
Was soll ich denn mit den Dateien machen?
Danke
Ma

Benutzeravatar
tbone
Berater
Beiträge: 572
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64
Produkt: aktuelle Beta-Version
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von tbone » 23. Apr 2019 12:28

Den Button-Code oben, den kopierst Du von hier in Dein Clipboard, dann wechselst Du zu DO, gehst dort in den "Customize"-Modus und pastest/einfügen den Clipboard-Inhalt auf irgendeine Toolbar. Dann Customize-Modus beenden und fertig, der Button ist nun da.

Was das Confirm-AddIn betrifft, da nimmst Du die neueste/recent Version. Also herunterladen, dann die "*.txt" Extension/Erweiterung aus dem Dateinamen entfernen (heisst dann: "Command.GUI_Confirm.js") und diese Datei verschiebst Du dann mit DO nach "/scripts" (genauso in die DO Pfadzeile eingeben, ist ein Alias).

Dann schon, sollte der Button mit dem Confirm-Addin funktionieren. o)

Maui
Beiträge: 63
Registriert: 7. Mär 2019 19:37
Betriebssystem: Windows 10 Pro
Produkt: Opus 12
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von Maui » 26. Apr 2019 16:17

Danke es hat jetzt geklappt.
Der Button ist da, bein drücken passiert auch was, das info Fenster sieht auch gut aus aber leider erhalte ich einen Fehler??

Ich habe Testverzeichnisse angelegt, ein paar Dateien hineingelegt und erhalte leider einen Fehler.
Die Dateien können kopiert, verschoben und in DO gelöscht werden.
FEHLER: Sie verfügen nicht über Benutzerrechte zum Verwalten von Überwachungsprotokollen.
***** Diese Rechte sind erforderlich, um Überwachungsinformationen zu kopieren (/COPY:U oder /COPYALL).
Hatte mich jetzt schon auf Synchronisieren mir verschieben gefreut.
Auch mit dem anderen Programm in der VM ist es ein richtiger Horror.
Es dauert ewig und ständig stürzt etwas ab. Ich muss mehrere Millionen Dateien Vergleichen um Duplikate zu löschen und Verzeichnisse zusammenfügen.
Auch DO hat 300.000 Dateien pro Verzeichnis von Quelle und ziel versucht zu sybchronisieren. Es hat 3 Tage gedauert und nachdem es fertig war konnte ich zwar sehen was hin und her Synchronisiert werden sollte. Es war auch alle schön mit den blauen Pfeilen markiert, aber keine aktiven Schaltflächen um die Synchronsierung durch zu führen???

Benutzeravatar
tbone
Berater
Beiträge: 572
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64
Produkt: aktuelle Beta-Version
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von tbone » 27. Apr 2019 13:02

Schalte DO mal in den "Elevated" Admin-Modus, dann geht es bestimmt.
Oder füge dem Code des Buttons oben ein "@admin" Modifier hinzu, dann schaltet DO automatisch auf "elevated" und die nötigen Berechtigungen sollten dann vorhanden sein.

Maui
Beiträge: 63
Registriert: 7. Mär 2019 19:37
Betriebssystem: Windows 10 Pro
Produkt: Opus 12
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von Maui » 27. Apr 2019 16:45

Danke, jetzt hat es geklappt.
Ich habe den Code geändert um zwei Verzeichnisse jetzt nicht zu synchronisieren sondern um Verzeichnisse zusammen zu fügen (newMove).
Das bedeutet alle neueren Dateien werden von der Quelle in das Zielverzeichnis kopiert und an der Quelle gelöscht (MOVE).
So das alle gleichen Dateien in der Quelle enthalten sind und alle neueren Dateien verschoben wurden.
Ich müsste dann nur noch das Quellverzeichnis löschen.

Code: Alles auswählen

Confirm MSG="verschieben von neueren Dateien zum Zielverzeichnis?\n\nfrom:\n{sourcepath$} \n\nto:\n{destpath$} " TITLE=Robocopy
Robocopy.exe {sourcepath$} {destpath$} /V /NP /R:0 /W:0 /COPYALL /MOVE /DCOPY:T
Eine weitere Option die ich suche ist bei gleichen Dateien diese im Quellverzeichnis löschen zu lassen.

Noch etwas sehr nerviges wenn ich das Script ausführen lasse. Der Bildschirm wechselt und immer kommt die Meldung ob ich zulassen möchte das DO etwas am Computer verändern darf. Kann man das abstellen?

Danke
Ma

Benutzeravatar
tbone
Berater
Beiträge: 572
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64
Produkt: aktuelle Beta-Version
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von tbone » 29. Apr 2019 09:41

Der Bildschirm wechselt und immer kommt die Meldung ob ich zulassen möchte das DO
Hast Du "@admin" hinzugefügt?
Eine weitere Option die ich suche ist bei gleichen Dateien diese im Quellverzeichnis löschen zu lassen.
Dazu müsstest Du Dir die Optionen von Robocopy nochmal genau durchlesen, siehe dazu: "robocopy.exe /?"
Auf den ersten Blick sehe ich dazu aber nichts, das ist auch eher ein "DuplicateFinder" Task, oder? o)

Maui
Beiträge: 63
Registriert: 7. Mär 2019 19:37
Betriebssystem: Windows 10 Pro
Produkt: Opus 12
Version DOpus: Pro

Re: Skripte mit DOS Befehlen?

Beitrag von Maui » 29. Apr 2019 09:54

Ja die Hilfe von Robocopy habe ich mir angeschaut, war aber nichts passendes dabei.
Ich denke das müsste ich mit rd für remove Directory machen.
Arbeite aber noch daran vorher alle leeren verzeichnisse löschen zu lassen bevor überhaupt eine Aktion gestartet wird.
Auch denke ich daran vorher alle leeren Dateien noch entfernen zu lassen, die müssen ja nicht überprüft werden.

Danke
Ma

Antworten