Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Scriptdatei komprimieren

Frage Entwicklung Batch & Shell

Mitglied: BigSanch

BigSanch (Level 1) - Jetzt verbinden

19.06.2017 um 20:43 Uhr, 394 Aufrufe, 12 Kommentare

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:

01.
function irgendwas( 
02.
    x=0 
03.
    if (x=5) then 
04.
        irgendwas.soll=passieren.hier() 
05.
    else 
06.
        wasandres.soll=passieren.hier() 
07.
    end 
08.
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
01.
    if (x=5) then 
02.
        irgendwas.soll=passieren.hier()
IN
01.
    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:
01.
	set "Line=!Line: then\n= then " 	--- ändere 'Leer then Neuezeile' in 'Leer then Leer'
Den Rest löse ich bis lang so:
01.
for /f "usebackq delims=" %%i in ("%input%") do (  
02.
	set "Line=%%i" 					--- kompletter originaler Text 
03.
	set "Line=!Line:    =%tab%!" 			--- mache 4 Leerzeichen zum Tab (%tab% ist weiter oben gespeichert :-)) 
04.
	set "Line=!Line:%tab%=!" 			--- lösche alle Tabs 
05.
	set "Line=!Line:function.variable=ev!" 		--- ändere Strings und Variablen 
06.
	set "Line=!Line:function.setup=es!" 		--- ändere Strings und Variablen 
07.
	set "Line=!Line:function.config=ec!" 		--- ändere Strings und Variablen 
08.
	set "Line=!Line:%str%=%rep%!" 			--- ändere Strings und Variablen 
09.
	echo !Line! >> "%output%" 			--- kopiere neuen Text in neue Datei 
10.
)
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:
01.
function irgendwas( 
02.
    x=0 
03.
    if (x=5) then 
04.
        irgendwas.soll=passieren.hier() 
05.
    else 
06.
        wasandres.soll=passieren.hier() 
07.
    end 
08.
end
soll das werden:
01.
function irgendwas(x=0; if (x=5) then irgendwas.soll=passieren.hier() else wasandres.soll=passieren.hier() end end
MfG Big Sanch
Mitglied: maretz
19.06.2017 um 21:22 Uhr
im zweifel geht das schon mit sed... alle return / tabs durch ein leerzeichen ersetzen -> fertig...
Bitte warten ..
Mitglied: Juanito
20.06.2017 um 01:46 Uhr
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
Bitte warten ..
Mitglied: AnkhMorpork
20.06.2017 um 07:37 Uhr
Aus meiner Erfahrung zum Thema Programmieren:

Dein Vorhaben ist kontraproduktiv weil die Lesbarkeit - und damit die "Wartung" - des Codes erschwert wird. Wenn du den Quelltext in 5 Jahren modifizieren willst, stehst du wie Ochs vorm Berg ...

jm2c
Bitte warten ..
Mitglied: emeriks
20.06.2017 um 08:18 Uhr
Hi,
Dein Vorhaben ist kontraproduktiv weil die Lesbarkeit - und damit die "Wartung" - des Codes erschwert wird. Wenn du den Quelltext in 5 Jahren modifizieren willst, stehst du wie Ochs vorm Berg ...
Dito!
Bitte warten ..
Mitglied: maretz
20.06.2017 um 09:07 Uhr
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...
Bitte warten ..
Mitglied: emeriks
20.06.2017, aktualisiert um 10:27 Uhr
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.
Bitte warten ..
Mitglied: AnkhMorpork
20.06.2017 um 12:18 Uhr
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.

Und es ist piepenhagen, woher er sich den Quellcode holt.

Und heiß is auch ...
Bitte warten ..
Mitglied: maretz
20.06.2017 um 13:26 Uhr
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
Bitte warten ..
Mitglied: AnkhMorpork
20.06.2017 um 14:03 Uhr
Zitat von maretz:

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.
Bitte warten ..
Mitglied: BigSanch
20.06.2017 um 15:48 Uhr
Danke für den Anstoß werde mir das mal ansehen. Danke .-)
Bitte warten ..
Mitglied: BigSanch
20.06.2017 um 15:49 Uhr
Werde mir sed mal zur Brust führen und dann schreiben ob ich es gerafft habe, Danke
Bitte warten ..
Mitglied: BigSanch
20.06.2017 um 16:09 Uhr
Erst mal Danke für Eure Antworten. Produktive Antworten habe ich kommentiert
@ all the rest :

Ich finde es kontraproduktiv jemandem zu sagen ob seine Arbeit einen Sinn hat oder nicht, wenn ich für mich entscheide eine Arbeit auf meinem Weg zu gestalten, dann erwarte ich dass das respektiert wird, genauso wie ich die Arbeit anderer respektiere. Was ich für einen Sinn dahinter sehe oder nicht, meinen Quellcode zu komprimieren, muss niemanden etwas angehen oder in Frage stellen. ICH sehe eine Sinn dahinter und wollte von der Seite hier einen Vorschlag wie man das umsetzt, nicht Klugscheißerei, ob es jemand produktiv oder Sinn entfremdet findet, sonst wäre meine Frage gewesen, "Was haltet Ihr von meiner Vorgehensweise".

Den Code den ich schreibe, ist mein Code, ich entwickle Addons selber, also habe ich natürlich den Original Code immer auf meiner Festplatte.
Da es Spiele und Systeme gibt, welche manche Codes nur in gewisser Dateigröße und ähnliches geben könnte, was man natürlich weiß, wenn man viel programmiert, macht es tatsächlich Sinn, manchmal gewissen Code zu komprimieren. Da es einfachheitshalber manchmal von Vorteil ist Variablen so zu benennen, dass man sie am besten zuordnen kann, man diese aber dann auf dem Server oder dem Spiel nicht mehr so benannt braucht, kann man die auch umbenennen um Zeichen zu sparen. Des weiteren ist es mit Sicherheit auch für geübte Coder in gewissen Situationen übersichtlicher, wenn man Funktionen dann irgendwann in einer Zeile hat, was auch schon einigen Codern aufgefallen sein dürfte. Da der Code in den meisten Verwendungen nicht abrufbar oder änderbar für Andere ist, da es in vielen Fällen Server seitig liegt, hat es absolut keinerlei Bewandtnis, ob ein Code nun offen, gekürzt, komprimiert oder auf irgendeine andere Weise verändert wurde, solange er funktioniert.

Wenn noch jemand etwas genauer wissen will, warum ich mit meinem Code was auch immer machen will, schreibt mich doch bitte per Mail an, denn andere die sich hier umsehen und eventuell je die gleiche Frage haben könnten, sollten doch bitte auch die Chance haben eine Lösung zu bekommen und nicht sich mit Banalitäten wie Unwissenheit und Unverständnis rumschlagen müssen.

Dennoch Danke für Eure investierte Zeit.
Bitte warten ..
Ähnliche Inhalte
Festplatten, SSD, Raid
VHDX-Datei komprimieren und verkleinern
gelöst Frage von RapToxXFestplatten, SSD, Raid5 Kommentare

Hallo zusammen, ich habe ein Problem mit dem komprimieren und verkleinern von einer VHDX-Datei. Das Linux System was sich ...

Outlook & Mail
Outlook 2010 ost.Datei löschen oder komprimieren
Frage von ansjo0815Outlook & Mail7 Kommentare

Hallo, wir benutzen Outlook 2010 mit Exchange und Cache Modus. Unsere pst und ost Dateien liegen auf dem Netzwerk ...

VB for Applications
Laufzeitfehler 3734 Datenbank komprimieren funktioniert nicht
gelöst Frage von QwertzuiopueVB for Applications3 Kommentare

Moin zusammen, ich bekomme leider immer die Fehlermeldung "Die Datenbank wurde vom Benutzer 'bbbbbbb' auf Computer 'blabla' in einen ...

Entwicklung
Datei mit Powershell Skript Komprimieren ohne Zusatzprogramm
gelöst Frage von Andreasde95Entwicklung18 Kommentare

Hallo ich habe ein Problem ich möchte eine Datei erstmal nur eine Bestimmte zum Test (später mal alle mit ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 8 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 13 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 13 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless19 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Windows Server
Remotesteuerung der Sitzung (Kennung XX) fehlgeschlagen
gelöst Frage von Stefan91Windows Server14 Kommentare

Hallo Zusammen, seit kurzem bekomme ich oben genannte Fehlermeldung, wenn ich versuche eine Remotesitzung über den Taskmanager fernzusteuern (Rechtsklick ...