Batch to exe als offene Lösung nutzen "wollen"
Hallo zusammen,
DIESES Forum hat mir schon oft weiter geholfen und ich habe - für meine Verhältnisse - so viel gelernt, dass ich die letzte Zeit damit arbeiten konnte .
Nun komme ich aber doch leider nicht weiter und freue mich über Hilfe:
Sehr viele Beiträge drehen sich um die Frage und den Sinn von Bat-to-exe. Auch ich habe das in der Vergangenheit gemacht, aber mehr aus Verlegenheit, denn aus Schutzgründen!
Meine Gründe:
- es lassen sich in dieser exe weitere Dateien mit unterbringen, die eben in einer Datei gespeichert sind, eben exe
- da ich mir diese Datei zum Arbeiten online ziehe (ich sie also zwischendurch auch für Kollegen aktualisieren kann), ist EINE Datei herunterzuladen irgendwie einfach
- in meiner exe ist ein netter Ladebalken als Datei enthalten Batch-Progressbar, den ich schon seit Jahren nutze (weil ich den selbst einfach nicht hinbekomme, schluchz)
Zusammengenommen geht es mir also nicht um einen Schutz, sondern um Bequemlichkeit.
Bisher habe ich eine lokale Batch, die meine batch.exe herunterlädt:
... dann wird diese unsichtbar gestartet und arbeitet ab, (weitere Dateien werden entpackt) währenddessen lasse ich die Progress-Bar laufen.
Alles funktioniert reibungslos!
Lässt sich das als Projekt realisieren? (Bestimmt, aber hier benötige ich Hilfe )
Insofern hatte dieser bat-to-exe "Kompiler" immer eine charmante Art, wenn nicht dauernd dieser Virus ...
Und ja, ich weiß, dass eine anständige Programmiersprache besser ist als mein Homework-Kram - allerdings läuft der seit Jahren sehr stabil und ich habe (stolz) alles allein zusammengebaut.
Ich habe mir auch schon den Wizzard von Windows angeschaut, allerdings möchte der eine Benutzereingabe beim Speichern und entpacken - ein Hinderungsgrund ...
Ich freue mich über Hilfe/Anregungen/Vorschläge ...
okidoki
DIESES Forum hat mir schon oft weiter geholfen und ich habe - für meine Verhältnisse - so viel gelernt, dass ich die letzte Zeit damit arbeiten konnte .
Nun komme ich aber doch leider nicht weiter und freue mich über Hilfe:
Sehr viele Beiträge drehen sich um die Frage und den Sinn von Bat-to-exe. Auch ich habe das in der Vergangenheit gemacht, aber mehr aus Verlegenheit, denn aus Schutzgründen!
Meine Gründe:
- es lassen sich in dieser exe weitere Dateien mit unterbringen, die eben in einer Datei gespeichert sind, eben exe
- da ich mir diese Datei zum Arbeiten online ziehe (ich sie also zwischendurch auch für Kollegen aktualisieren kann), ist EINE Datei herunterzuladen irgendwie einfach
- in meiner exe ist ein netter Ladebalken als Datei enthalten Batch-Progressbar, den ich schon seit Jahren nutze (weil ich den selbst einfach nicht hinbekomme, schluchz)
Zusammengenommen geht es mir also nicht um einen Schutz, sondern um Bequemlichkeit.
Bisher habe ich eine lokale Batch, die meine batch.exe herunterlädt:
taskkill /F /IM cscript.exe
@echo on & setlocal
:: Beginn Serverdaten
:: open server
:: Username
:: Passwort
set "s-sv=XXX"
set "s-us=XXX"
set "s-pw=XXX"
set "s-pd=Verzeichnis"
chcp 850
>"%temp%\senden.txt" ECHO open %s-sv%
>>"%temp%\senden.txt" ECHO %s-us%
>>"%temp%\senden.txt" ECHO %s-pw%
>>"%temp%\senden.txt" ECHO cd update
>>"%temp%\senden.txt" ECHO binary
>>"%temp%\senden.txt" ECHO get "batch.exe"
>>"%temp%\senden.txt" ECHO QUIT
FTP -v -i -s:%temp%\senden.txt
del "%temp%\senden.txt"
batch.exe "%~n0"
del batch.exe
exit
... dann wird diese unsichtbar gestartet und arbeitet ab, (weitere Dateien werden entpackt) währenddessen lasse ich die Progress-Bar laufen.
Alles funktioniert reibungslos!
Lässt sich das als Projekt realisieren? (Bestimmt, aber hier benötige ich Hilfe )
Insofern hatte dieser bat-to-exe "Kompiler" immer eine charmante Art, wenn nicht dauernd dieser Virus ...
Und ja, ich weiß, dass eine anständige Programmiersprache besser ist als mein Homework-Kram - allerdings läuft der seit Jahren sehr stabil und ich habe (stolz) alles allein zusammengebaut.
Ich habe mir auch schon den Wizzard von Windows angeschaut, allerdings möchte der eine Benutzereingabe beim Speichern und entpacken - ein Hinderungsgrund ...
Ich freue mich über Hilfe/Anregungen/Vorschläge ...
okidoki
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 574426
Url: https://administrator.de/contentid/574426
Ausgedruckt am: 19.11.2024 um 17:11 Uhr
33 Kommentare
Neuester Kommentar
Was du da zusammengeskriptet hast, ist die Grundfunktionalität eines jeden Updaters. Zusätzlich packt der das ganze noch um Bandbreite zu sparen sowie generiert eine Prüfsumme für die Integrität und und und. Ich verstehe den Sinn dieses Themas nicht: Klar kann man so was als Batchdatei schreiben. Aber wozu? Und vor allem warum in Batch?
Was hat das mit einer offenen Lösung zutun? Eine offene Lösung wäre eine entsprechende Bibliothek (die es dafür bestimmt schon gibt) zu nutzen. Wenn es um das Ergebnis geht ein guter Weg um Arbeit zu sparen. Will man zukunftsorientiert lernen (wonach es nicht so ganz aussieht), kann man das natürlich auch selbst programmieren.
Benutzernamen und Kennwörter als Klartext in generierte Skripte zu schreiben ist jetzt auch nicht gerade die sicherste Art, mit Zugangsdaten umzugehen. Genau so wenig wie das Herunterladen von Skripten, die ungeprüft ausgeführt werden. So was ist für einen potenziellen Angreifer doch der Jackpot: Alles was man da rein schreibt wird bedingungslos ausgeführt. Am besten ist noch, wenn das mit einem Admin-Account läuft.
Du weißt es besser, aber nutzt dennoch uralte Technik, bei dem sich vielen Entwicklern die Fußnädel aufrollen?
Und mit dem Argument können wir auch weiterhin Windows XP verwenden: Läuft seit Jahren stabil und da habe ich meine ersten Gehversuche alleine unternommen. Auf das was ich da in VBScript gemurkst habe bin ich aus heutiger Sicht nicht Stolz, sondern schäme mich eher dafür. Das taucht auch in keiner Bewerbung auf. Nicht nur weil die Technologie schon damals uralt war, sondern auch weil die Codequalität meiner damaligen Erfahrung entsprach.
Was hat das mit einer offenen Lösung zutun? Eine offene Lösung wäre eine entsprechende Bibliothek (die es dafür bestimmt schon gibt) zu nutzen. Wenn es um das Ergebnis geht ein guter Weg um Arbeit zu sparen. Will man zukunftsorientiert lernen (wonach es nicht so ganz aussieht), kann man das natürlich auch selbst programmieren.
Benutzernamen und Kennwörter als Klartext in generierte Skripte zu schreiben ist jetzt auch nicht gerade die sicherste Art, mit Zugangsdaten umzugehen. Genau so wenig wie das Herunterladen von Skripten, die ungeprüft ausgeführt werden. So was ist für einen potenziellen Angreifer doch der Jackpot: Alles was man da rein schreibt wird bedingungslos ausgeführt. Am besten ist noch, wenn das mit einem Admin-Account läuft.
Zitat von @OKIDOKI:
Und ja, ich weiß, dass eine anständige Programmiersprache besser ist als mein Homework-Kram - allerdings läuft der seit Jahren sehr stabil und ich habe (stolz) alles allein zusammengebaut.
Und ja, ich weiß, dass eine anständige Programmiersprache besser ist als mein Homework-Kram - allerdings läuft der seit Jahren sehr stabil und ich habe (stolz) alles allein zusammengebaut.
Du weißt es besser, aber nutzt dennoch uralte Technik, bei dem sich vielen Entwicklern die Fußnädel aufrollen?
Und mit dem Argument können wir auch weiterhin Windows XP verwenden: Läuft seit Jahren stabil und da habe ich meine ersten Gehversuche alleine unternommen. Auf das was ich da in VBScript gemurkst habe bin ich aus heutiger Sicht nicht Stolz, sondern schäme mich eher dafür. Das taucht auch in keiner Bewerbung auf. Nicht nur weil die Technologie schon damals uralt war, sondern auch weil die Codequalität meiner damaligen Erfahrung entsprach.
Zitat von @OKIDOKI:
Schämen tue ich mich ebenfalls, glaub man. Wie gesagt, ich bin nur mit diesem einen Projekt beschäftigt als alternder Freizeittüftler, ohne Ambitionen auf eine neue Karriere. Sprich, mein einziges Codeprojekt!
Also schämen solltest Du Dich keinesfalls!Schämen tue ich mich ebenfalls, glaub man. Wie gesagt, ich bin nur mit diesem einen Projekt beschäftigt als alternder Freizeittüftler, ohne Ambitionen auf eine neue Karriere. Sprich, mein einziges Codeprojekt!
Ich bin als Administrator tätig und nutze immer wieder Batch, PowerShell und VBscript. Ich habe auch gar nicht den Anspruch, dass mein Code einen "echten" Programmierer beeindruckt! Der Code muss mein Problem lösen bzw. eine wiederkehrende Tätigkeit automatisieren. Thats It!
Natürlich lernt man im Laufe der Zeit dazu und wenn ich alten Code von mir ansehe, muss ich so manches Mal schmunzeln, wie ich damals so gecodet habe...
Sei es drum, werde mich doch lieber Gartenarbeit und Motorradfahren widmen, als mich hier zu vielen Fragen auszusetzen - ohne konkrete Lösungen ...
Ditto!- Warum funktioniert folgende Batch nicht, sondern erzeugt beim Doppelklick nur die o.g. Tmp Datei und bricht dann ab?
Wenn Du keinen Doppelklick machst, sondern es in einer Eingabeaufforderung (Umgangssprachlich: im DOS Fenster) startest, wirst du den Grund für den Abbruch erfahren. Beim Doppelklick schliesst sich alles viel zu schnell, bevor du den Grund lesen kannst.Ein upload funktioniert übrigens mit derselben Datei tadellos!!! (also anstatt get -> put) verstehe ich einfach nicht ...
Das heisst sie existiert bereits auf dem lokalen Rechner (Sonst würde ja kein Upload gehen). Also kann kein Download passieren, da er dann überschreiben müsste.... und vielleicht hat jemand noch einen Tipp, wie ich o.g. Menu etwas schöner hinbekomme
Mit Farben oder einer grafischen GUI evtl.oder wenigstens immer obenliegend auf dem Desktop habe
ganz einfach: Link auf dem Desktop abspeichernUnd meine großen Herausforderungen:
- alles mit Boardmitteln!
Powershell- alles mit Boardmitteln!
- eigene Progressbar zu haben
Powershell- möglichst wenige Codezeilen
Powershell hat alles an Board was du brauchst, es kann auf das .NET Framework zurückgreifen und damit auch komplette GUIs erstellen inkl. nativem FTP-Upload und allem was dazugehört.=> https://docs.microsoft.com/de-de/powershell/
Damit könntest du was bauen:
:loop
echo|set /p="."
goto:loop
- alles zusammen in einer Datei (auch für verschiedene Systeme zum Entpacken), evtl. sogar als cab?
Sowas hab ich früher immer schon mit einem selbstentpackenden Archiv gemacht was ich mit der Vollversion von WinRAR erzeugt hatte. Da kansn tud dan enpacken udn gleich edie Batch starten.
Hallo,
etwas schöner wär es dann so:
Wenn die dne Aufruf der Batch dann so machst ist das Fester zumindest minimiert:
Wobei du ja auch die Balkenfunktion als Unterprozedur in der bestehenden Batch laufen lassen kannst...
etwas schöner wär es dann so:
@echo off
>%temp%\msg.vbs ECHO Set WshShell = CreateObject("WScript.Shell")
>>%temp%\msg.vbs ECHO intResult = WshShell.Popup(WScript.Arguments(0),1,"Datenübertragung, bitte warten ...", 64)
:loop
%temp%\msg.vbs " |### "
%temp%\msg.vbs " |###|### "
%temp%\msg.vbs " |###|###|### "
%temp%\msg.vbs " |###|###|###|### "
%temp%\msg.vbs " |###|###|###|###|###|"
goto:loop
Wenn die dne Aufruf der Batch dann so machst ist das Fester zumindest minimiert:
start "Balken" /MIN Balken.bat
Wobei du ja auch die Balkenfunktion als Unterprozedur in der bestehenden Batch laufen lassen kannst...
3 Zeilen in PS ... 1000 und ein Märchen in VBS
https://naterice.com/ftp-upload-and-ftp-download-with-vbscript/
https://naterice.com/ftp-upload-and-ftp-download-with-vbscript/
Zitat von @144260:
3 Zeilen in PS ... 1000 und ein Märchen in VBS
https://naterice.com/ftp-upload-and-ftp-download-with-vbscript/
3 Zeilen in PS? So viel? 3 Zeilen in PS ... 1000 und ein Märchen in VBS
https://naterice.com/ftp-upload-and-ftp-download-with-vbscript/
Hier ein Aufruf aus einer Batch der über PS die oui.txt Datei runterläd:
powershell.exe -Command (new-object System.Net.WebClient).DownloadFile('http://standards-oui.ieee.org/oui/oui.txt','%~p0oui.txt')
Zitat von @144260:
3 Zeilen in PS ... 1000 und ein Märchen in VBS
https://naterice.com/ftp-upload-and-ftp-download-with-vbscript/
So So,3 Zeilen in PS ... 1000 und ein Märchen in VBS
https://naterice.com/ftp-upload-and-ftp-download-with-vbscript/
in 3 Zeilen wird also auch das Abfangen evtl. Fehler abgehandelt!?
Der Code für den eigentlichen FTP-Transfer sind ja auch mit VBScript nur ein paar Zeilen. Der Rest geht dann für Fehlerbehandlungen/Prüfungen drauf. Deckt sich im Übrigen mit meinen Erfahrungen. Der eigentlich interessante Code sind oft nur ein paar Zeilen. Der Rest geht dann für Prüfungen das Abfangen der ganzen Sonderfälle bzw. Fehler drauf. Und das ist eigentlich in allen (Programmier)Sprachen die ich kenne so.
Grundsätzlich gebe ich Dir aber recht. PowerShell ist die Zukunft. Mit VBScript sollte man neue Projekte nach Möglichkeit jetzt nicht mehr anfangen.
Zitat von @OKIDOKI:
... jetzt fehlen nur noch Passwort und Username ...
An welcher Stelle füge ich ein?
In die URI... jetzt fehlen nur noch Passwort und Username ...
An welcher Stelle füge ich ein?
"ftp://username:password@ftp.domain.tld"
powershell.exe -EP ByPass -Command "$client = new-object System.Net.WebClient; $client.Credentials = New-Object System.Net.NetworkCredential 'username','Password';$client.DownloadFile('http://standards-oui.ieee.org/oui/oui.txt','%~p0oui.txt')"
Ich hätte das halt über die nativen FTP Funktionen im .NET gemacht (System.Net.FtpWebRequest), der WebClient ist mir zu sehr IE lastig programmiert und popt gerne mal IE Dialogboxen außerhalb der PS auf, die eine Automatisierung verderben können.
Tante Edith:
PowerShell + FTP in EXE
Lösung mit FTPWebRequest als bessere Alternative zum WebClient findet sich dort von @colinardo am 06.03.2016
Genau gleich nur eben die Uploadfile statt DownloadFile Methode dafür nutzen
https://docs.microsoft.com/de-de/dotnet/api/system.net.webclient.uploadf ...
Wieder mal RTFM, aber das wäre ja bei Administrator.de zu viel verlangt ...
https://docs.microsoft.com/de-de/dotnet/api/system.net.webclient.uploadf ...
Wieder mal RTFM, aber das wäre ja bei Administrator.de zu viel verlangt ...
Irgendwie habe ich, glaube ich, zu naiv gedacht:
nee du hast den Link oben nicht mal ansatzweise gelesen, denn dann hättest du die URL als ersten und nicht als zweiten Parameter angegeben, außerdem fehlt dann noch der absolute Pfad zur Datei...Das zum Thema Brett vorm Kopp.Zitat von @OKIDOKI:
Nachtrag: Ich hatte ja Probleme, den Ladebalken als Subroutine einzubauen.
Nun lasse ich einfach ein Popup-Fenster aufgehen und automatisch wieder schließen mit einem Hinweis -
Nachtrag: Ich hatte ja Probleme, den Ladebalken als Subroutine einzubauen.
Nun lasse ich einfach ein Popup-Fenster aufgehen und automatisch wieder schließen mit einem Hinweis -
Dann schau dir doch mal an wie man sowas besser angeht, bsp einer Progressbar mit den ganzen schönen GUI Elementen die dem NET Framework zur Verfügung stehen:
Powershell GUI bleibt während einer While schleife hängen...
powershell.exe -EP ByPass -Command "$client = new-object System.Net.WebClient; $client.Credentials = New-Object System.Net.NetworkCredential 'username','Password';$client.DownloadFile('http://standards-oui.ieee.org/oui/oui1.txt','%~p0oui1.txt');$client.DownloadFile('http://standards-oui.ieee.org/oui/oui2.txt','%~p0oui2.txt');$client.DownloadFile('http://standards-oui.ieee.org/oui/oui3.txt','%~p0oui3.txt')"