37414
Goto Top

Batchdatei mit Platzhalter

Hallo liebe User,

ich habe eine Sicherungsdatei per Batch mit Robocopy erstellt. Alles funktioniert grds. sehr gut.
Nur stellte ich heute fest, dass - nach einem Update des eigentlichen Sicherungsprogramms - das Programmverzeichnis immer eine neue Versionsnummer erhält.
Daher müßte ich meine Batch dann jedesmal anpassen, was natürlich Unsinn ist...

Ich sichere mit dem Programm "AOMEI Backupper", mit dem ich sehr zufrieden bin.

Hier mal der Auszug aus meiner Batch mit dem Start der Sicherung:

"C:\Program Files (x86)\AOMEI Backupper\AOMEI Backupper 5.0.8.\Backupper.exe"  

Es müßte doch möglich sein, diese "5.0.8." durch einen Platzhalter zu ersetzen.
Sowas in der Art wie:

"C:\Program Files (x86)\AOMEI Backupper\AOMEI Backupper *.*\Backupper.exe"  

Habe es auch schon versucht, indem ich eine Verknüpfung angesteuert habe (also die passende ".lnk"-Datei). Das geht auch. Aber das ist mir zu unsicher, falls ich die Verknüpfung mal lösche oder in ein anderes Verzeichnis verschiebe etc.

Weiß jemand von Euch, wie man so einen Platzhalter in einem Batch-Pfad setzt?

Danke & Gruß,
imebro

Content-Key: 588786

Url: https://administrator.de/contentid/588786

Printed on: April 19, 2024 at 11:04 o'clock

Member: rubberman
rubberman Jul 18, 2020 at 13:41:25 (UTC)
Goto Top
Wildcards funktionieren immer nur am letzten Objekt in einem Pfad. Also musst du es erst mal zum letzten Objekt machen. Ungetestet:
for /d %%i in ("C:\Program Files (x86)\AOMEI Backupper\AOMEI Backupper *") do if exist "%%~i\Backupper.exe" echo mach was mit "%%~i\Backupper.exe"  

Steffen
Mitglied: 37414
37414 Jul 18, 2020 at 13:48:20 (UTC)
Goto Top
Vielen Dank Steffen.
Ich werde Denen Code mal testen.

Gruß,
imebro
Member: Shadowminder
Shadowminder Jul 18, 2020 at 14:00:26 (UTC)
Goto Top
hallo imebro,

nur eine Vermutung, aber könntest du dir nicht den Ordnernamen als variable ausgeben lassen und dann diesen als Platzhalter einfügen?

LG Shadowmind
Member: rubberman
Solution rubberman Jul 18, 2020 at 14:22:09 (UTC)
Goto Top
Musst aber trotzdem erst mal mittels Globbing rausfinden, wie das Verzeichnis tatsächlich heißt. Ist halt ein Stepp zusätzlich, noch eine Variable zu definieren ...

for /d %%i in ("C:\Program Files (x86)\AOMEI Backupper\AOMEI Backupper *") do if exist "%%~i\Backupper.exe" set "backupperfolder=%%~nxi"  
if defined backupperfolder echo mach was mit "C:\Program Files (x86)\AOMEI Backupper\%backupperfolder%\Backupper.exe"  

Steffen
Mitglied: 37414
37414 Jul 18, 2020 updated at 14:23:12 (UTC)
Goto Top
...danke Dir @shadowmind.

Aber wenn sich der Ordnername ja bei jedem Update ändert, müsste ich die Variable ja auch immer wieder anpassen und hätte nichts gewonnen. Oder sehe ich das falsch? Kenne mich mit den Variablen nicht wirklich gut aus face-smile

Gruß,
imebro
Mitglied: 37414
37414 Jul 18, 2020 at 14:28:28 (UTC)
Goto Top
Am besten ging es ja über die Verknüpfung... also einfach die ".lnk"-Datei ansteuern. Aber da ich sowas schnell mal verschiebe, ist das auch zu unsicher. Aber damit bin ich auf jeden Fall nicht abhängig vom Namen des Programmverzeichnisses.

Gruß,
imebro
Member: Shadowminder
Shadowminder Jul 18, 2020 at 15:29:11 (UTC)
Goto Top
du könntest dir ja ausgeben wie der ordner heißt und das als variable speichern. geht mit wildcards

LG Shadowmind
Mitglied: 37414
37414 Jul 18, 2020 at 15:43:32 (UTC)
Goto Top
...wie würde ich das denn machen?
Also mit wildcards, wie Du geschrieben hast.

LG
imebro
Mitglied: 37414
37414 Jul 18, 2020 updated at 20:29:04 (UTC)
Goto Top
Ich habe es jetzt in eine Batchdatei eingefügt, die über einen Aufruf in einer anderen Batch gestartet wird.
Hier soll ja nichts einfach kopiert werden, sondern die Datei "AMBackup.exe" soll gestartet werden mit den unten im Code angegebenen Parametern.

Die Parameter bewirken den Programmstart, wodurch ein neues System-Backup erstellt wird mit dem Namen "System-Backup_[Tagesdatum]". Dieses wird im Verzeichnis "E\IMAGES" abgelegt und ohne Komprimierung (siehe Code).

Vorher wird dann eben die Variable "backupfolder" erstellt und im eigentlichen Start-Code wird diese Variable dann benutzt.
Ich bin aber noch unsicher bezüglich des Startes dieser Sicherung >> vor allem in Bezug auf dieses "if defined backupperfolder..." und dann "echo mach was mit...".

*Hier der Code meiner Batch:*

for /d %%i in ("C:\Program Files (x86)\AOMEI Backupper\AOMEI Backupper *") do if exist "%%~i\AMBackup.exe" set "backupperfolder=%%~nxi"  

REM ------------------------------------ Beginn des eigentlichen Start-Codes ----------------------------------------------------------------

if defined backupperfolder start "" "C:\Program Files (x86)\AOMEI Backupper\%backupperfolder%\AMBackup.exe" /b new /n System-Backup_%date:~0% /t system /d E:\IMAGES /c 0  

REM ------------------------------------- Ende des Start-Codes ---------------------------------------------------------------

Gruß,
imebro
Mitglied: 37414
37414 Jul 18, 2020 at 20:33:14 (UTC)
Goto Top
...habe den Code jetzt einfach mal so über die aufrufende Batchdatei ausgeführt... und... tatsächlich funktioniert es.
Es startet ein DOS-Fenster, in dem auch der Fortschritt der Sicherung angezeigt wird.

Habe hier mal einen Screenshot gemacht:

laufende sicherung

Unter dem DOS-Fenster sieht man auch noch die Statusanzeige von AOMEI Backupper.

Übrigens habe ich diese zwei Anführungsstriche "" hinter dem Wort "start" noch eingefügt, da das irgendwo so empfohlen wurde. Ohne diese beiden Anführungsstriche erschien nämlich nur ein DOS-Fenster, in dem einfach nur der komplette Code-Pfad als Titelfenster angezeigt wurde. Mir ist aber nicht wirklich klar, was genau diese beiden Anführungsstriche bewirken...

Gruß,
imebro
Mitglied: 144705
144705 Jul 19, 2020 updated at 06:04:34 (UTC)
Goto Top
Zitat von @37414:
Übrigens habe ich diese zwei Anführungsstriche "" hinter dem Wort "start" noch eingefügt, da das irgendwo so empfohlen wurde. Ohne diese beiden Anführungsstriche erschien nämlich nur ein DOS-Fenster, in dem einfach nur der komplette Code-Pfad als Titelfenster angezeigt wurde. Mir ist aber nicht wirklich klar, was genau diese beiden Anführungsstriche bewirken...
Man könnte ja einfach mal in der Referenz nachschlagen statt herum zu raten
https://ss64.com/nt/start.html

START "title" [/D path] [options] "command" [parameters]

Key:
   title       Text for the CMD window title bar (required.)
   path        Starting directory.
   command     The command, batch file or executable program to run.
   parameters  The parameters passed to the command.
Hier siehst du das der erste Parameter den Titel des Fensters definiert und dieser nicht optional ist.
Mitglied: 37414
37414 Jul 19, 2020 updated at 09:20:18 (UTC)
Goto Top
Danke Dir für den Hinweis.

Aber ich hatte einfach nicht verstanden, warum der komplette Pfad im Titelfenster erscheint, obwohl ich ja hinter START gar keinen Text eingegeben habe, sondern direkt den Pfad (siehe oben in der Codebox). Und das steht halt nicht in der Referenz face-smile

Aber es funktioniert ja nun recht gut und ich habe gestern Abend ja bereits die erste Sicherung erfolgreich abgeschlossen.
Dazu öffne ich eine Batch mit einem Auswahlmenü. Und Punkt 5 des Menüs ist eben "neues Image". Und nachdem ich die 5 eingegeben habe, wird nach drücken von Enter die nächste Batch aufgerufen, die dann den obigen Code enthält. Am Ende springt die ursprüngliche Batch wieder zurück auf die Auswahl und ich kann weitere Sicherungen durchführen oder sonst was.

Übrigens hatte ich mir über "Deskmodder" die Pro-Version von "AOMEI Backupper" runtergeladen, wobei die Lizenz für 1 Jahr gültig ist. Erst mit der Pro-Version funktioniert das über die Befehlszeile und mit der Ansteuerung der "AMBackup.exe", statt der herkömmlichen "Backup.exe", die nur die GUI startet.

Falls jemand sonst noch einen Tipp hat für die Umsetzung... oder wie man es besser machen könnte, dann gerne face-wink

Danke und Gruß,
imebro
Mitglied: 144705
144705 Jul 19, 2020 updated at 09:31:07 (UTC)
Goto Top
obwohl ich ja hinter START gar keinen Text eingegeben habe, sondern direkt den Pfad
Ein Pfad ist auch Text 🙂
Mitglied: 37414
37414 Jul 19, 2020 at 09:40:03 (UTC)
Goto Top
Seltsam finde ich es dennoch.
Ich habe START ja schon oft in Batchdateien genutzt - aber noch nie mit diesen beiden Anführungsstrichen.
Naja... jetzt weiß ich´s ja.

Gruß,
imebro
Member: rubberman
rubberman Jul 19, 2020 at 10:12:29 (UTC)
Goto Top
Die CMD funktioniert da leicht abweichend von der Dokumentation. Wenn das erste Argument nach START nicht in Anführungszeichen steht, wird es nicht als Fenstertitel geparst. So etwas wie
start notepad
beispielsweise. Da du aber die Anführungszeichen um deinen Pfads zwingend brauchst, darf dieser nicht das erste Argument sein. Hier brauchst du also einen zusätzlichen Fenstertitel der in Anführungszeichen steht. Das kann auch ein "leerer" String sein, da der Fenstertitel bei GUI Programmen sowieso unberücksichtigt bleibt.
Alles in Allem schadet es nie bei einem START Kommando ein "" voranzustellen, egal ob es benötigt wird oder nicht. Wenn du es immer mit schreibst brauchst du dir keine Gedanken darüber zu machen...

Steffen
Mitglied: 37414
37414 Jul 19, 2020 at 12:23:34 (UTC)
Goto Top
Danke Dir @steffen für die super nachvollziehbare Erklärung face-wink

Das habe ich verstanden...

Gruß und Thread ist nun auch gelöst, falls niemand von Euch mehr Verbesserungen oder Vorschläge hat.

imebro