Scriptdatei komprimieren
Hallo
Ich bin USER erfahren, was BATCH anbelangt, also nicht blöd und lernfähig, aber nicht besonders gut, da ich es auch doch etwas seltener brauche.
Habe zum Thema BATCH schreiben, meist auf dieser Seite die besten Ansätze zum weiterkommen erlagt, daher schreib ich nun hier mal eine Frage,
da ich mal nicht weiter komme, trotz aufwändiger Suche und Google Suche.
Ich Programme Scripts in jeglicher Form für Spiele, bzw deren Addons und eigene Addons. Die momentanen Scripts die ich schreibe sind in LUA.
Die Scripts die ich schreibe, schreibe ich zum testen und dann ändern in einer übersichtlichen Formatierung wie zB:
So bekomme ich es per Debug Zeilennummer auch besser hin, es zu ändern.
Wenn nun aber ein Script fertig ist, möchte ich es komprimieren und ändere gewisse Strings in etwas vereinfachte Strings und entferne Leerzeilen und komprimiere
der Endübersicht einfachheitshalber einige Funktionen in Einzeiler. Das alles zur zeit per Hand und NP++ Funktion.
Jetzt wollt ich mir eine Batch Datei schreiben, welche dies in Zukunft für mich macht und hab ein einfaches "qwert" auswechseln zu "trewq" hinbekommen.
Auch Leerzeilen entfernen und einfache Strings ändern bekomm ich hin. Nun zu meinem Problem, was ich nicht hinbekomme:
Ich will eine Abfrage starten, welche den Code an gewissen Stellen zusammenfügt, wobei dabei die Suche zum beispiel einen Zeilenumbruch erkennen sollte.
Beispiel:
ÄNDERE
IN
Also, ich kann die Tabs for dem irgendwas löschen und then ein Leerzeichen am Ende hinzufügen, aber nicht den Zeilenumbruch löschen.
Wie mache ich sowas? Wie kann ich nun einen zeilenumbruch suchen und entfernen wie eventuell so:
Den Rest löse ich bis lang so:
Das bekomme ich nicht hin. Ich hoffe mir kann jemand helfen und versteht was ich da machen will und hat eventuell auch noch ein paar andere Tips für mich bezüglich meines Vorhabens.
Hier nochmal zur Veranschaulichung. Aus dem:
soll das werden:
MfG Big Sanch
Ich bin USER erfahren, was BATCH anbelangt, also nicht blöd und lernfähig, aber nicht besonders gut, da ich es auch doch etwas seltener brauche.
Habe zum Thema BATCH schreiben, meist auf dieser Seite die besten Ansätze zum weiterkommen erlagt, daher schreib ich nun hier mal eine Frage,
da ich mal nicht weiter komme, trotz aufwändiger Suche und Google Suche.
Ich Programme Scripts in jeglicher Form für Spiele, bzw deren Addons und eigene Addons. Die momentanen Scripts die ich schreibe sind in LUA.
Die Scripts die ich schreibe, schreibe ich zum testen und dann ändern in einer übersichtlichen Formatierung wie zB:
function irgendwas(
x=0
if (x=5) then
irgendwas.soll=passieren.hier()
else
wasandres.soll=passieren.hier()
end
end
So bekomme ich es per Debug Zeilennummer auch besser hin, es zu ändern.
Wenn nun aber ein Script fertig ist, möchte ich es komprimieren und ändere gewisse Strings in etwas vereinfachte Strings und entferne Leerzeilen und komprimiere
der Endübersicht einfachheitshalber einige Funktionen in Einzeiler. Das alles zur zeit per Hand und NP++ Funktion.
Jetzt wollt ich mir eine Batch Datei schreiben, welche dies in Zukunft für mich macht und hab ein einfaches "qwert" auswechseln zu "trewq" hinbekommen.
Auch Leerzeilen entfernen und einfache Strings ändern bekomm ich hin. Nun zu meinem Problem, was ich nicht hinbekomme:
Ich will eine Abfrage starten, welche den Code an gewissen Stellen zusammenfügt, wobei dabei die Suche zum beispiel einen Zeilenumbruch erkennen sollte.
Beispiel:
ÄNDERE
if (x=5) then
irgendwas.soll=passieren.hier()
if (x=5) then irgendwas.soll=passieren.hier()
Also, ich kann die Tabs for dem irgendwas löschen und then ein Leerzeichen am Ende hinzufügen, aber nicht den Zeilenumbruch löschen.
Wie mache ich sowas? Wie kann ich nun einen zeilenumbruch suchen und entfernen wie eventuell so:
set "Line=!Line: then\n= then " --- ändere 'Leer then Neuezeile' in 'Leer then Leer'
Den Rest löse ich bis lang so:
for /f "usebackq delims=" %%i in ("%input%") do (
set "Line=%%i" --- kompletter originaler Text
set "Line=!Line: =%tab%!" --- mache 4 Leerzeichen zum Tab (%tab% ist weiter oben gespeichert :-))
set "Line=!Line:%tab%=!" --- lösche alle Tabs
set "Line=!Line:function.variable=ev!" --- ändere Strings und Variablen
set "Line=!Line:function.setup=es!" --- ändere Strings und Variablen
set "Line=!Line:function.config=ec!" --- ändere Strings und Variablen
set "Line=!Line:%str%=%rep%!" --- ändere Strings und Variablen
echo !Line! >> "%output%" --- kopiere neuen Text in neue Datei
)
Das bekomme ich nicht hin. Ich hoffe mir kann jemand helfen und versteht was ich da machen will und hat eventuell auch noch ein paar andere Tips für mich bezüglich meines Vorhabens.
Hier nochmal zur Veranschaulichung. Aus dem:
function irgendwas(
x=0
if (x=5) then
irgendwas.soll=passieren.hier()
else
wasandres.soll=passieren.hier()
end
end
function irgendwas(x=0; if (x=5) then irgendwas.soll=passieren.hier() else wasandres.soll=passieren.hier() end end
MfG Big Sanch
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 341003
Url: https://administrator.de/forum/scriptdatei-komprimieren-341003.html
Ausgedruckt am: 16.02.2025 um 19:02 Uhr
12 Kommentare
Neuester Kommentar
Hi,
ich möchte dir gerne PowerShell anstelle von Batch ans Herz legen.
Damit zu Skripten ist in vielerlei Hinsicht einfacher. - Leider ist die Lernkurve recht hoch, aber es lohnt sich wenn du häufig skriptest.
Die oben beschriebenen Probleme lassen sich bequem mit String-Manipulationen lösen. Schau mal hier:
https://www.windowspro.de/script/strings-powershell-ersetzen-vergleichen ...
Wenn du Lektüre zu PowerShell suchst kann ich dir die Bücher von Tobias Weltner empfehlen.
Grüße
Juanito
ich möchte dir gerne PowerShell anstelle von Batch ans Herz legen.
Damit zu Skripten ist in vielerlei Hinsicht einfacher. - Leider ist die Lernkurve recht hoch, aber es lohnt sich wenn du häufig skriptest.
Die oben beschriebenen Probleme lassen sich bequem mit String-Manipulationen lösen. Schau mal hier:
https://www.windowspro.de/script/strings-powershell-ersetzen-vergleichen ...
Wenn du Lektüre zu PowerShell suchst kann ich dir die Bücher von Tobias Weltner empfehlen.
Grüße
Juanito
Unsinn! Sorry, aber wie kommt man auf so nen Bolzen das es unleserlich ist? Wer sagt denn das der sich den Code vom Zielsystem holt um den zu lesen?
Wenn man eine Applikation baut liegt der Quelltext ja auch nicht auf dem "Zielsystem" sondern beim Entwickler.... Der hat das dann in einem Versionierungs-System (im besten Fall) und kann sich jederzeit jede Version genau ansehen.
Allerdings: Gerne wird sowas gemacht um einen "Fremdeingriff" zu unterbinden. Dafür ist das natürlich genauso unsinnig...
Wenn man eine Applikation baut liegt der Quelltext ja auch nicht auf dem "Zielsystem" sondern beim Entwickler.... Der hat das dann in einem Versionierungs-System (im besten Fall) und kann sich jederzeit jede Version genau ansehen.
Allerdings: Gerne wird sowas gemacht um einen "Fremdeingriff" zu unterbinden. Dafür ist das natürlich genauso unsinnig...
Ich kann nur für mich selbst sprechen und daraus meine Empfehlungen ableiten.
Je ausführlicher ein Code geschrieben ist, desto einfacher fällt der Review. Das ist Fakt.
Wenn man eine Batch "komprimieren" will, dann vermute ich dahinter auch den Quellcode-"Schutz". Und ich stimme Dir da voll zu, dass das dann Nonsens wäre.
@BigSanch
Falls es Dir darum geht, den Code zu verschleiern, dann solltest Du besser in Richtung "Kompilieren von Batch zu EXE" gehen.
Je ausführlicher ein Code geschrieben ist, desto einfacher fällt der Review. Das ist Fakt.
Wenn man eine Batch "komprimieren" will, dann vermute ich dahinter auch den Quellcode-"Schutz". Und ich stimme Dir da voll zu, dass das dann Nonsens wäre.
@BigSanch
Falls es Dir darum geht, den Code zu verschleiern, dann solltest Du besser in Richtung "Kompilieren von Batch zu EXE" gehen.
Zitat von @maretz:
Unsinn! Sorry, aber wie kommt man auf so nen Bolzen das es unleserlich ist? Wer sagt denn das der sich den Code vom Zielsystem holt um den zu lesen?
Aus diesem Satz kann ich nur ablesen, dass du mit Programmieren nix am Hut hast.Unsinn! Sorry, aber wie kommt man auf so nen Bolzen das es unleserlich ist? Wer sagt denn das der sich den Code vom Zielsystem holt um den zu lesen?
Und es ist piepenhagen, woher er sich den Quellcode holt.
Und heiß is auch ...
Ok - und was bringt dich auf diese Vermutung? Ich programmiere relativ viel - und üblicherweise hole ich mir den Code nie vom Zielsystem zurück da ich gar nicht weiss ob der ggf. dort geändert wurde oder sonst was damit passiert ist.
Und in meinem Versionssystem ist der Code logischerweise korrekt formatiert. Der wird erst vor dem "ausliefern" (egal ob nun kommerziell oder privat) umgebaut. Entsprechend kann ich den da lesen, habe die Kommentare drin usw...
Aber gut, ich lasse dich in deinem Glauben das du die einzige Wahrheit kennst... HF & GL
Und in meinem Versionssystem ist der Code logischerweise korrekt formatiert. Der wird erst vor dem "ausliefern" (egal ob nun kommerziell oder privat) umgebaut. Entsprechend kann ich den da lesen, habe die Kommentare drin usw...
Aber gut, ich lasse dich in deinem Glauben das du die einzige Wahrheit kennst... HF & GL
Zitat von @maretz:
Aber gut, ich lasse dich in deinem Glauben das du die einzige Wahrheit kennst... HF & GL
Aber gut, ich lasse dich in deinem Glauben das du die einzige Wahrheit kennst... HF & GL
Ich weiß gerade einmal wie man das schreibt ...
<Vorschlag>
Lass uns so auseinander gehen: Jedem wie er es mag.
</Vorschlag>
Ich mach dann hier Schluss - bringt dem TO ja nix.