Kann ich Dateitypen wie .bat funktionieren lassen?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Dafür das Du Dir den hochtrabenden Namen "Hacker21" gegeben hast, verstehst Du recht wenig von der Sache😏😥 ..warum verlinkst du eine 23 Jahre alte VB-Basic Anleitung (Erstellt: 01.07.2001)? Die bezieht sich noch auf Windows 98 und hat überghaupt nix mit Batch zu tun.

... zu .bat:

Dateien mit der Endung .bat (Dos-Batch) werden seit Windows 11 1H22 nicht mehr ausgeführt. Die offizielle Endung von Windows-Batch ist seit über 25 Jahren .cmd ! (...und genausolange geben Leute welche keine Ahnung haben Neulingen falsche Ratschläge)

Es bringt auch keinen Nutzen, wenn man die Ausführung von .bat über Einträge in der Registry erzwingt. Wenn der Kommandointerpreter (cmd.exe) erkennt, das die geöffnete Batch-Date die Endung .bat hat schaltet er in einen Dos-Kombatibilitätsmodus mit einem fehlerhaften Errormanagement.

Ich möchte mich nicht weiter in Einzelheiten des falschen Fehlermanagements eingehen. Die Endung .bat ist endlich tot und das ist gut so .

Der Kommandointerpreter prüft vor dem Ausführen einer Datei die Endung und akzeptiert keine keine Benutzerdefinierten (Fantasie)Endungen.

Speichere Batchdateien mit der Endung .cmd und Windows führt sie anstandslos aus.

Um die volle Funktionalität von .bat unter Windows11 herzustellen sind über 20 teilweise auf das individuelle System zugeschnittene Registryeinträge nötig!

Spiele nicht an der Registry herum

Ich weiß nicht welche Gründe Du haben könntest, Batchdateien eine andere Endung als .cmd zu geben.

Wenn du Batchcode in einer anderen mit einer anderen Dateiendung ausführen möchtest , musst Du diese (temporär) zu .cmd umbenennen.

Demo.blubb (eine Batch mit falscher FantasieEndung)

@echo off
echo Hallo ich bin die heimliche Batch

und die Batch welche die .blubb-Datei ausführt:

Mainbatch.cmd

@echo off
echo Hallo ich  bin "%~nx0" 
 rem in eine temporäre .cmd-Datei kopieren
copy "Demo.blubb" "%Temp%\Demo.cmd"  >nul 2>&1
 rem Kopie verstecken
attrib "%Temp%\Demo.cmd" +h
 rem die Kopie aufrufen
call "%Temp%\Demo.cmd"
echo wieder  zurueck in "%~nx0" 
pause

...das ist ist natürlich nur Kinderkram, welcher leich zu durchschauen ist...

Wenn Du Deines Namens😂 würdig sein willst Lerne Powershell

powershell.exe -encodedCommand VwByAGkAdABlAC0ASABvAHMAdAAgAEgAYQBsAGwAbwAgAEUAcgB6AGUAcwBlAGwAIAAgAGgAYQBlAHQAdABlACAAIABEAGkAYwBoACAAIABqAGUAdAB6AHQAIABlAGIAZQBuAHMAbwBnAHUAdAAgACAAZABlAGkAbgBlAG4AIABSAGUAYwBoAG4AZQByACAAegBlAHIAbABlAGcAZQBuACAAawBvAGUAbgBuAGUAbgAgAC0AZgBvACAAcgBlAGQAIAA=

... oder meinetwegen Python.

Und murkse nicht mit Batch herum, es sei denn Du hast eine masochistische Ader. (Tricksereien mit Batch)

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Hacker21 
Beitragsersteller
 18.06.2024, 02:43

Und ja, der name passt nicht.

0
Erzesel  18.06.2024, 07:02
@Hacker21

🤔

Was passt nicht am Namen? Wenn etwas nicht funktioniert, musst Du Dich schon präzise ausdrücken .

Natürlich kannst du für "...Demo..." beliebige andere Namen verwenden und "blubb" steht erstrecht für etwas Beliebiges...

Mit Batch hast Du Dir für Dein Projekt eine der schwierigsten Sprachen ausgesucht. Wegen des eingeschränkten Befehlsumfangs lässt sich Vieles nur sehr umständlich realisieren. Batch benutzt man normalerweise nur um irgendwelche Dateioperationen oder Programmstarts automatisiert durchzuführen.

Ich weiß nicht was Du letztendlich mit dem ganzen Versteckspiel erreichen möchtest. Da der Code von Batch (und anderen nicht compilierten Sprachen) immer einsehbar ist, lässt sich nichts komplett verheimlichen.

0
Hacker21 
Beitragsersteller
 19.06.2024, 06:23
@Erzesel

Ein Fanprodukt erschaffen: .bip3 ! Bip ist echt süß! (Youtube.) Batch ist halt die einzige Sprache, die ich kann! Ich lerne jetzt gleich Python. Ist das einfach? Java nicht!

0
Hacker21 
Beitragsersteller
 18.06.2024, 02:42

War halt das einzige, was ich verstanden habe.

0

Hab's auf die Schnelle nicht rausgefunden. ShellExecute behandelt die Endungen .bat, .com und .exe speziell. Das ist fest eingebaut. Die Dokumentation dazu habe ich nicht gefunden (zumindest nicht hier). Bei CreateProcess (wird intern durch ShellExecute aufgerufen) heißt es, dass für Batchdateien cmd.exe mit dem Parameter /c aufgerufen werden muss. Allerdings scheint cmd beim Parameter /c ebenfalls ShellExecute auszuführen falls die Endung nicht .bat lautet, sodass es sich rekursiv selbst aufruft. Soeben getestet. Zu guter letzt hab ich Bing/Copilot (Microsoft) befragt: Er sagt auch nur, dass diese Endungen fix als Programm erkannt werden. Auf meine Nachfrage nach der Quelle kam witzigerweise die Antwort: "...is based on my internal knowledge".


Erzesel  18.06.2024, 08:27

Der Parameter /c (für close) bewirkt lediglich, das cmd.exe bzw. das Consolfenster sich nach Ausführung selbstständig schließt. Das Gegenstück ist /k (für keep) ,...standardverhalten.

Die explizite Angabe von /c ist nur nötig, wenn wenn explizit eine neue Instanz von cmd.exe gestartet wird .

Da .ShellExecute (oder ander ähnliche Befehle in anderen Sprachen) immer explizit eine neue Instanz von cmd starten , würde diese (ohne /c) nach abarbeiten der Batch/Kommandozeile das Fenster mit einem Prompt offen zurücklassen was zb. Bei einer Instanz mit Adminrechten fatale Folgen haben könnte...

0
DonkeyShot  18.06.2024, 11:59
@Erzesel

Ich habe das hier aus der Doku zu CreateProcess sinngemäß zitiert:

"To run a batch file, you must start the command interpreter; set lpApplicationName to cmd.exe and set lpCommandLine to the following arguments: /c plus the name of the batch file."

Auf etwas anderes habe ich mich nicht bezogen.

1
Hacker21 
Beitragsersteller
 17.06.2024, 03:59

es gibt eine komische angabe in dem .bat/PersistentHandler ordner. kann die helfen?

{5e941d80-bf96-11cd-b579-08002b30bfeb}

0

Ich hatte selbst eine idee. mithilfe einer 3rd-Party app von mir schreibe ich die .bip3 datei zu einer .cmd datei um. die führe ich dann aus.

Woher ich das weiß:Recherche

Erzesel  17.06.2024, 11:14

warum brauchst Du eine 3thParty app?

demo.enc

QGVjaG8gb2ZmDQplY2hvIEhhbGxvIGljaCBiaW4gZGllIGhlaW1saWNoZSBCYXRj
aA0KZWNobyAlY2Ql

Mainbatch.cmd

@echo off
echo Hallo ich  bin "%~nx0" 
certutil -f -decode "demo.enc"  "%temp%\decoded_Demo.cmd"  >nul 2>&1
call "%temp%\decoded_Demo.cmd"
echo wieder  zurueck in "%~nx0" 
pause

Dateien kannst Du mit folgender Zeile base64-encoden:

certUtil -encodehex -f "Quelldatei" "Zieldatei"  1 

certutil ist ein Systemprogram unter win10/11 zum anlegen/anzeigen/konfigurieren von Zertifikaten. man kann es jedoch auch für verschieden primitive ver-/entschlüsselungsaufgaben missbrauchen

0
Hacker21 
Beitragsersteller
 18.06.2024, 02:43
@Erzesel

eben! Mainbatch.cmd ist die 3rd party app!

0
Erzesel  18.06.2024, 07:36
@Hacker21
Mainbatch.cmd ist die 3rd party app!

Irgendwie sollten wir erstmal an Deiner Terminologie arbeiten....😅

  • 3rd Party (Drittanbieter-) Software ist zusätzliche Software, die ein Anwender erwirbt, obwohl das bestehende System mit Software ausgestattet wurde, aber eben nicht alle nötigen Funktionen bietet, die der Nutzer braucht.

Eine Batch, welche Du geschrieben (oder irgendwie zusammenkopiert) hast ist Deine Schöpfung und nicht die eines Drittanbieters .

Das was ich hier "Mainbatch" genannt habe ist einfach die "Startdatei" , welche untergeordnete Funktionen/Programme ausführt oder deren Ausführung in Gang setzt.

0