Windows Batch umarbeiten -> Immer zuende ausführen auf Herunterfahren reagieren

scooter010

Commander
Registriert
Sep. 2014
Beiträge
2.830
Moin Forum!

Ich nutze Spotify und habe es auf einer SSD. Da es immer noch eine erhöhte Schreibleistung auf SSDs erzeugen soll, verschiebe ich die Anwendung vor dem Start in eine RAM-Disk und erstelle symbolische Verknüpfungen zwischen dem ursprünglichen Speicherort und der RAM-Disk. Wird Spotify beendet, hebt die Batch die symbolischen Verknüpfungen auf, kopiert die Daten aus der RAM-Disk zurück und entfernt die RAM-Disk.
Soweit funktioniert alles, hier einmal meine Batch (leider kein korrektes Syntax-Highlighting für Kommentare):
Code:
@echo off

::Den Helper beenden, da dieser sonst das Verschieben verhindert
taskkill /im SpotifyWebHelper.exe
::Erstellung der RAM-Disk
imdisk -a -s 4G -m S: -p "/fs:ntfs /q /y"

::Kopieren der Spotify Programmverzeichnisse auf die RAM-Disk
xcopy /E /C /Q "%appdata%\Spotify" S:\Roaming\
xcopy /E /C /Q "%localappdata%\Spotify" S:\Local\

::Loeschen der originalen Spotify-Verzeichnisse um die Symbolischen Verknuepfungen anlegen zu können
rmdir /s /q "%appdata%\Spotify"
rmdir /s /q "%localappdata%\Spotify"

::Erstellung der Symbolischen Verknuepfung
mklink /D "%appdata%\Spotify" S:\Roaming\
mklink /D "%localappdata%\Spotify" S:\Local\

::Ausfuehren von Spotify und warten, bis es beendet wird
Start /wait %appdata%\Spotify\Spotify.exe

::Wieder den Helper beenden, der ein Verschieben verhindern wuerde, wenn er laeuft
taskkill /im SpotifyWebHelper.exe

::Symbolische Verknuepfungen entfernen
rmdir "%appdata%\Spotify"
rmdir "%localappdata%\Spotify"

::Spotify Programmdaten von der RAM-Disk zurueck in das originale Verzeichnis kopieren
xcopy /E /C /Q S:\Roaming "%appdata%\Spotify\"
xcopy /E /C /Q S:\Local "%localappdata%\Spotify\"

::RAM-Disk aushaengen
imdisk -D -m S:
Nun mein Problem:
Wenn ich vergesse vor dem Herunterfahren Spotify zu beenden, dann wird die Ramdisk gelöscht und Spotify ist quasi Deinstalliert :freak: und ich muss es neu installieren...

Gibt es eine Möglichkeit (muss nicht Batch sein, auch VBS oder ps) dies in einer Script-Umgebung mit Windows Boardmitteln so umzuschreiben, dass:
  1. keine UAC Abfrage mehr kommt/nötig ist,
  2. kein Fenster mehr in der Taskleiste oder sonst wo erscheint, außer das von Spotify und
  3. beim geordneten Herunterfahren, ohne Spotify manuell zu beenden, die Installation nicht beschädigt wird?

Anmerkung: Das Script benötigt Adminrechte. Ich weiß grade nicht ob die Adminrechte für die Erstellung der RAM-Disk, den Schreibzugriff auf %appdata% bzw. %localappdata% oder den Symlink (mklink /D) erforderlich sind...

Über kleine Denkanstöße würde ich mich freuen.


MfG
 
dir ist bekannt das aktuelle SSDs selbst bei starkem Gebrauch 20 Jahre halten?

Mach dir halt noch ne bat zum runterfahren, diese beendet dann natürlich erst spotify bzw

führt deine andere bat aus und fährt dann runter.
 
Zuletzt bearbeitet:
Ja, aber lass mir bitte meinen Spleen. Ich habe schon mehr als eine SSD in unter 20 Jahren kaputt bekommen.
Mir geht die Software auf den Sack, weil die sich nicht vernünftig verhält (Installation nach %appdata% nicht Programme), da muss ich mal zeigen, wer der Boss auf meinem PC ist. :king:
Ergänzung ()

BmwM3Michi schrieb:
führt deine andere bat aus und fährt dann runter.

Klappt aber nicht, wenn das Herunterfahren/Neustart durch andere Programme (Windows-Update, Treiberinstallationen,...) getriggerd wird.
 
in welchem Ordner werden die Daten geschrieben? Ist das der Storage-Ordner in Spotify?

Falls ja, würde ich nur den Storage-Ordner in die Ramdisk verschieben, und den sym-link natürlich auch nur

für den einen Ordner. Evtl kannst du in spotify den storage-Zielort einstellen, dann geht es

auch ohne symlink.
 
Zuletzt bearbeitet:
Hallo,

Versuch mal:

Erstelle für das Script einen Scheduled Task - dort hast du die Möglichkeit (Checkbox) den Task mit höheren Rechten auszuführen. In einem weiteren Script rufst du den Task auf (schtasks /run ...) und hängst dieses unter

gpedit ==> Richtlinien für lokaler Computer ==> Computerkonfiguration ==> Windows-Einstellungen ==> Scripts ==> Herunterfahren

rein.

Gruss,
Andi
 
Zuletzt bearbeitet:
Also müsste ich aus meinem Skript 2 machen? Eines, mit dem ich Spotify starte und eines zum beenden? Schließlich startet das Skript bei jeder Ausführung eine neue Instanz von spotify. Aber wie wird Spotify zurück kopiert, wenn ich spotify nur schließe?
 
Also ich habe bei mir einfach den Datenpfad auf eine Festplatte (D: ) umgelenkt, und zwar nach dieser Anleitung:

Spotify vom PC deinstallieren (andernfalls startet es nicht mehr) und Folgendes in die CMD eingeben:
> rmdir "%LocalAppData%/Spotify" /s /q
> mklink "%LocalAppData%/Spotify" /d D:\Temp\Spotify

Und dann Spotify wieder installieren oder wie genau jetzt ? Danke.
 
Danke, aber ich habe kein zweites Laufwerk im Laptop. Und das Hauptlaufwerk ist zu klein/voll, um es noch sinnvoll zu teilen. Und so reduziere ich auch nicht die Schreibleistung auf die SSD in meinem Fall...
 
Zurück
Oben