Nicht benötigte Scriptdateien per Batch entfernen

Hier können Probleme Rund um die Technik des PC's und sämtlicher Spiele diskutiert werden. Hilfe wird hier nicht garantiert, aber man kanns ja versuchen. :-)

Moderator: Moderatoren

Antworten
X2return
Schütze
Beiträge: 173
Registriert: So 01 Nov, 2009 10:52 am
Lieblings X-Titel:
Wohnort: Pinneberg
Kontaktdaten:

Nicht benötigte Scriptdateien per Batch entfernen

Beitrag von X2return »

Huhu, (ich wusste nicht wohin damit - bin hoffentlich richtig hier ...)

Ich bin viel am Herumprobieren mit vielen teils umfangreichen Scripts, Plugins und Mods. Hierfür stöbere ich in mehreren Foren. Viele dürften wissen, dass sich einige Scripter mehr um die "Sauberkeit" ihres Spielverzeichnis bemühen als andere.
Natürlich kommt es vor, dass sich auch mal ein Script nicht so verhält wie ich es aus der Beschreibung gelesen habe, unerwünschte Nebeneffekte erzeugt oder garnicht mit anderen harmoniert. In diesem Fall sollen die relevanten Dateien nach ggf. vorhandener Deinstallation natürlich wieder weg. Da ich nicht für jedes Script in 5 verschiedenen Unterordnern teils über 100, manchmal einfach chaotisch benannte Dateien, suchen und per Hand vernichten will, schreib ich für die bei mir auf Platte liegenden Scripts Batch-Dateien.

Die Grundidee entspricht natürlich einer Kopie von einigen Scriptern die eine solche bereits mitliefern. Das Ganze sieht aber noch nicht ganz so aus wie ich das gern hätte. Es folgen der Beispielcode der Batch und bisherige Versuche.

Code: Alles auswählen

@echo off
 cls
 echo.
 echo Uninstaller: ... Test Script ...
 echo.
 echo Sofern eine Deinstallations-Routine vorhanden ist sollte diese
 echo VOR dem Entfernen angewandt und das Spiel gespeichert werden!

:Frage
 echo.
 echo Soll ... Test Script ... jetzt entfernt werden?
 set /P X= (J)a / (N)ein / (E)xit:
 echo.
 if /I "%X%"=="J" goto :Ja
 if /I "%X%"=="N" goto :Nein 
 if /I "%X%"=="E" goto :Exit 
 cls
 echo.
 echo Ungueltige Eingabe ...
 echo.
 echo  (J)a	 = Dateien werden entfernt.
 echo.
 echo  (N)ein = Deinstallation wird abgebrochen.
 echo.
 echo  (E)xit = Abbrechen und Fenster schliessen.
 goto Frage

:Ja
 cls
 echo.
 echo Folgende Dateien werden entfernt:...
 echo.
 dir ..\scripts\"kopie*" ..\scripts.uninstall\"kopie*"
rem del ..\director\""
rem del ..\documents\""
rem del ..\mods\""
 del ..\scripts\"kopie*"
 del ..\scripts.uninstall\"kopie*"
rem del ..\t\""
 echo.
 echo.
 echo A C H T U N G   ! !
 echo.
 echo Wenn der beinhaltete Mod als Fakepatch angewandt wurde, muss die
 echo entsprechende ".cat" und ".dat" manuell entfernt werden.
 echo.
 pause
 goto Ende

:Nein
 cls
 echo.
 echo Die Deinstallation wurde abgebrochen.
 echo Es wurden keine Dateien entfernt.
 echo.
 pause
 goto Exit

:Ende
 echo.
rem del ..\scripts.delete\"delete testscripts.bat" >nul

:Exit
 exit
Die Funktion wird erfüllt - auch die Frage verhält sich in etwa so wie ich mir das vorstelle - nur die Anzeige bekomme ich nicht hin.

del "test.script*"
löscht die entsprechenden Dateien ohne dies zu kommentieren. Aufgrund der wildcard " * " hätte ich aber gern alle angesprochenen Dateien dargestellt.
Das Umleiten in eine Logdatei per:
... > dellog.txt oder
... >> dellog.txt
erzeugt bei mir eine inhaltlose Datei mit dem angegebenen Namen. Davon abgesehen soll die Batch, Dateien löschen und nicht weitere erstellen. Die Anzeige hätte ich gern wie früher in DOS einfach im aktuellen Fenster gelistet.

dir "test.script*"
del "test.script*"
... kommt meiner Vorstellung relativ nahe. Mich stört allerdings der unnötige Platzverbrauch durch die Formatierung und das Layout. Unnötig finde ich das Datum und den Zeitstempel an jeder Datei und ganz besonders die Laufwerksinformation, Seriennummer und am Ende die Zusammenfassung der Dateien für jeden Ordner. Sogar das Verzeichnis der Batch selbst wird nebst einiger Zeilenumbrüche noch mit angegeben.

Schon bei kleinen Scripts mit beispielsweise 4 Dateien in 4 Ordnern wird die vorgemerkte Fenstergröße des DOS-Fensters gesprengt. Hat jemand eine Idee, wie ich das ändern kann ohne per "echo" jede Datei einzeln anzeigen zu lassen? Insbesondere bei umfangreicheren Scripts deren Dateinamen strukturiert sind würde ich gern die wildcard nutzen.
Die Anzeige wünsche ich mir aufgrund der wildcard. Sollten damit unbeabsichtigt Dateien von anderen Mods gelöscht werden muss ich das nicht erst inGame an meinem explodierenden Schiff erkennen um dann mit der Suche zu beginnen.

Vielen Dank
X2return
Think positive ...
"Sir, we're surrounded!"
"Excellent! Now we can attack in any direction."
Benutzeravatar
ThanRo
Veteran Klasse 3
Beiträge: 1446
Registriert: Di 15 Mai, 2007 3:34 pm
Lieblings X-Titel:

Re: Nicht benötigte Scriptdateien per Batch entfernen

Beitrag von ThanRo »

X2return hat geschrieben:Die Funktion wird erfüllt - auch die Frage verhält sich in etwa so wie ich mir das vorstelle - nur die Anzeige bekomme ich nicht hin.

del "test.script*"
löscht die entsprechenden Dateien ohne dies zu kommentieren. Aufgrund der wildcard " * " hätte ich aber gern alle angesprochenen Dateien dargestellt.
Das Umleiten in eine Logdatei per:
... > dellog.txt oder
... >> dellog.txt
erzeugt bei mir eine inhaltlose Datei mit dem angegebenen Namen. Davon abgesehen soll die Batch, Dateien löschen und nicht weitere erstellen. Die Anzeige hätte ich gern wie früher in DOS einfach im aktuellen Fenster gelistet.
Dir ist aber schon klar, daß du ganz am Anfang mit "@echo off" jede Ausgabe (außer der explizit durch "echo" angeforderten) verboten hast?

dir "test.script*"
del "test.script*"
... kommt meiner Vorstellung relativ nahe. Mich stört allerdings der unnötige Platzverbrauch durch die Formatierung und das Layout. Unnötig finde ich das Datum und den Zeitstempel an jeder Datei und ganz besonders die Laufwerksinformation, Seriennummer und am Ende die Zusammenfassung der Dateien für jeden Ordner. Sogar das Verzeichnis der Batch selbst wird nebst einiger Zeilenumbrüche noch mit angegeben.

Schon bei kleinen Scripts mit beispielsweise 4 Dateien in 4 Ordnern wird die vorgemerkte Fenstergröße des DOS-Fensters gesprengt. Hat jemand eine Idee, wie ich das ändern kann ohne per "echo" jede Datei einzeln anzeigen zu lassen? Insbesondere bei umfangreicheren Scripts deren Dateinamen strukturiert sind würde ich gern die wildcard nutzen.
Die Anzeige wünsche ich mir aufgrund der wildcard. Sollten damit unbeabsichtigt Dateien von anderen Mods gelöscht werden muss ich das nicht erst inGame an meinem explodierenden Schiff erkennen um dann mit der Suche zu beginnen.
Hast du den Befehl "dir" schon einmal mit dem Schalter "/w" ausprobiert?
Ansonsten empfehle ich dir eine DOS Befehlsreferenz wie die folgende:
http://www.i8086.de/dos-befehle/dos-befehle.html
X2return
Schütze
Beiträge: 173
Registriert: So 01 Nov, 2009 10:52 am
Lieblings X-Titel:
Wohnort: Pinneberg
Kontaktdaten:

Re: Nicht benötigte Scriptdateien per Batch entfernen

Beitrag von X2return »

Hi ThanRo,
ThanRo hat geschrieben:Dir ist aber schon klar, daß du ganz am Anfang mit "@echo off" jede Ausgabe (außer der explizit durch "echo" angeforderten) verboten hast?
Ja, ist mir klar, denn die reguläre Ausgabe zeigt nur den jeweils ausgeführten Befehl, nicht aber die angesprochenen Dateien. Mit der wildcard " * " könnte mir da entscheidendes entgehen. :wow:
ThanRo hat geschrieben:Hast du den Befehl "dir" schon einmal mit dem Schalter "/w" ausprobiert?
Ansonsten empfehle ich dir eine DOS Befehlsreferenz wie die folgende:
http://www.i8086.de/dos-befehle/dos-befehle.html
Ja, hab ich. Auch hier werden für jeden Ordner Datenträgerbezeichnung & SN nebst der Zusammenfassung angezeigt was ich unnötig finde.
Vielen Dank für den Link - werde mir diesen gleich mal anschauen.

Ansonsten kann ich berichten, dass ich im Moment eine für mich akzeptable Lösung gefunden habe. Beispiel:
dir /s /b ..\scripts\"Test.script*"
del ..\scripts\"Test.script*"

Hiermit bekomme ich jede angesprochene Datei ink. Pfad ohne weitere Informationen zum Ordner oder LW angezeigt.

Vielen Dank
X2return
Think positive ...
"Sir, we're surrounded!"
"Excellent! Now we can attack in any direction."
Benutzeravatar
ThanRo
Veteran Klasse 3
Beiträge: 1446
Registriert: Di 15 Mai, 2007 3:34 pm
Lieblings X-Titel:

Re: Nicht benötigte Scriptdateien per Batch entfernen

Beitrag von ThanRo »

Schade das Windows nicht wie Linux (und ähnliche Systeme) über einen Paketmanager verfügt. Damit wäre sowohl Installation als auch saubere Deinstallation problemlos möglich. Nur so Sachen wie Fakepatches die eventuell noch umbenannt werden müssen wären auch weiterhin noch Handarbeit. So ist quasi jeder gezwungen das Rad jedesmal neu zu erfinden.
X2return
Schütze
Beiträge: 173
Registriert: So 01 Nov, 2009 10:52 am
Lieblings X-Titel:
Wohnort: Pinneberg
Kontaktdaten:

Re: Nicht benötigte Scriptdateien per Batch entfernen

Beitrag von X2return »

Soweit ich informiert bin, kann ich Dir da nur zustimmen - würde sich Syntax für mich nicht wie Bahnhof anhören, wäre ich definitiv auch ein Linuxfreund. Aber solang man dafür Ingenieur sein muss und für alles irgendwelche Emulatoren oder geheimnisvolle Kommandozeilen oder so braucht, weil nunmal immernoch vieles für windows angepasst ist, wird das nix mit mir.

Grüße
X2return
Ghostrider[FVP]
Senior-Ausbilder
Beiträge: 960
Registriert: Do 01 Nov, 2012 2:37 am
Lieblings X-Titel: XbtF bis X3:FL
Wohnort: Ceos Geldquelle

Re: Nicht benötigte Scriptdateien per Batch entfernen

Beitrag von Ghostrider[FVP] »

Hallo :)

Also erstmal sei gesagt ich verstehe nicht viel von Batchdateien, daher kann ich nicht helfen aber ich habe für mich eine Alternative gefunden, welche ich Euch erzählen möchte und vielleicht ist die ja auch dem einen oder anderen eine Hilfe.

Wenn mir ein Script gefällt dann lade ich es ja in einem speziellen Ordner runter - meisten liegen die Dateien dann in einem ZIP/RAR Format vor.... mit meinen Datei-Manager kann ich mir diese dann ansehen und ich kopiere die entsprechenden Dateien dann einfach ins Spielverzeichnis.

Sollte jetzt wieder erwarten etwas nicht funktionieren suche ich nicht in meinen 1648 Scriptdateien nach den Richtigen Dateien die ich löschen will sondern nehme wieder meinen Datei-Manager und lasse die beiden Verzeichnisse "vergleichen" .. dann spuckt er mir z.B. 6 Dateien des installierten Script aus und die kann ich dann ganz gezielt im Game-Script-Ordner löschen.. das gleiche mache ich mit dem T-Ordner und fertig .. eine saubere Sache und funktioniert seit Jahren sehr gut.

Btw. ich nutze den SpeedCommander als Datei-Manager.
Föderation Vereinter Planeten -=)FVP(=-
Since 1998... join the future - X3 Gateless

Bild
Ghostrider's X-Universum [INDEX]Lucikes Scripts & Mods
X2return
Schütze
Beiträge: 173
Registriert: So 01 Nov, 2009 10:52 am
Lieblings X-Titel:
Wohnort: Pinneberg
Kontaktdaten:

Re: Nicht benötigte Scriptdateien per Batch entfernen

Beitrag von X2return »

Hm, ein Direktvergleich von Verzeichnissen ohne extra 2 Fenster umständlich öffnen und platzieren zu müssen hört sich schon nicht so verkehrt an. Sowas nutze ich gern zum Übersetzen von tFiles in Form von Notepad++.
Jedem das Seine sag ich mal. Wenn Du mit Deiner Methode glücklich bist, ist das auch gut so. Ich persönlich bevorzuge einen einzigen Doppelklick um die Sache zu erledigen - ohne Extras, ohne Tool.
Da unterliegt dann die "Kontrollsucht" etwas der Bequemlichkeit. Denn wenn ich die Batch ordentlich geschrieben und getestet habe, gibts auch nicht mehr wirklich viel, was da schief gehen kann.

Grüße
X2return
Think positive ...
"Sir, we're surrounded!"
"Excellent! Now we can attack in any direction."
Tonsilgon
Rekrut
Beiträge: 72
Registriert: Mo 06 Mai, 2013 8:55 am
Lieblings X-Titel:

Re: Nicht benötigte Scriptdateien per Batch entfernen

Beitrag von Tonsilgon »

X2return hat geschrieben:Ja, ist mir klar, denn die reguläre Ausgabe zeigt nur den jeweils ausgeführten Befehl, nicht aber die angesprochenen Dateien. Mit der wildcard " * " könnte mir da entscheidendes entgehen. :wow:
Sind unter dem Verzeichnis in dem die Dateien gelöscht werden noch Unterverzeichnisse in denen Dateien NICHT gelöscht werden sollen?
Falls nein, dann versuch mal den del-Befehl mit dem Parameter /S.
Der löscht dann zwar rekursiv (was aber u.U. nicht stört), dafür zeigt er aber auch alle Dateien an, die er löscht.

Sieht dann z.B. so aus:

Code: Alles auswählen

U:\tmp>del * /s
Möchten Sie "U:\tmp\*" löschen (J/N)? j
Datei wurde gelöscht - U:\tmp\Neues Textdokument - Kopie (2).txt
Datei wurde gelöscht - U:\tmp\Neues Textdokument - Kopie (3).txt
Datei wurde gelöscht - U:\tmp\Neues Textdokument - Kopie (4).txt
Datei wurde gelöscht - U:\tmp\Neues Textdokument - Kopie (5).txt
Datei wurde gelöscht - U:\tmp\Neues Textdokument - Kopie (6).txt
Datei wurde gelöscht - U:\tmp\Neues Textdokument - Kopie.txt
Datei wurde gelöscht - U:\tmp\Neues Textdokument.txt
X2return
Schütze
Beiträge: 173
Registriert: So 01 Nov, 2009 10:52 am
Lieblings X-Titel:
Wohnort: Pinneberg
Kontaktdaten:

Re: Nicht benötigte Scriptdateien per Batch entfernen

Beitrag von X2return »

Hi Tonsilgon,
Tonsilgon hat geschrieben:Sind unter dem Verzeichnis in dem die Dateien gelöscht werden noch Unterverzeichnisse in denen Dateien NICHT gelöscht werden sollen?
Falls nein, dann versuch mal den del-Befehl mit dem Parameter /S.
Der löscht dann zwar rekursiv (was aber u.U. nicht stört), dafür zeigt er aber auch alle Dateien an, die er löscht.
Nein, in den angesprochenen Ordnern (director, documents, mods, scripts, ..., t) existieren i.d.R keine Unterverzeichnisse (ausgenommen sind seltene, fragwürdige Backup-Experimente :gruebel: )

Hatte ich bereits versucht -> dir /s /b ..\scripts\"test.script*"
Sieht im Prinzip exakt so aus, wie ich das gern hätte, sprengt allerdings oftmals die Breite des Fensters wodurch das Ganze bei 40 überschaubar gelöschten Dateien durch den Zeilenumbruch schnell mal zum ausgewachsenen Roman mutiert wenn z.B. jemand seine Dateien nach ES-Vorschlag im Verzeichnis C:\Programme\Egosoft\X3 Terran Conflict\addon\scripts\... liegen hat.

Ich habe das /s daher weggelassen und eine Leerzeile (echo.) zwischen den 2-5 bearbeiteten Verzeichnissen eingefügt. Dann werden einfach nur die Dateien gelistet. Ich werd mir das so mal ne Weile ansehen und sehen ob ich das so behalten will.

Vielen Dank für Deine Antwort
X2return
Think positive ...
"Sir, we're surrounded!"
"Excellent! Now we can attack in any direction."
Antworten