shadowminder
Goto Top

Injektion von Text in Batchdatei

Hallo zusammen!

Da ich ja gerne in Batch rumspiele, würde ich mir gerne eine art Compiler in Batch bauen, mit dem ich Abkürzungen in meiner Batch verwenden kann.

Beispiel:

Batch mit Abkürzungen:
@echo off
#interface
pause
......

Die Compiler Batch sollte folgendes mit dem oben genannten script machen:

@echo off
echo.
echo  BLABLABLA by Shadowmind
echo.
echo     Exit[X]
choice X
if Errorlevel 0 exit
pause
......

Hat irgendwer ne Idee wie man das umsetzen könnte?

Ich freue mich auf antworten! :D

Content-ID: 572672

Url: https://administrator.de/contentid/572672

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

144260
144260 17.05.2020 aktualisiert um 12:19:15 Uhr
Goto Top
"Compiler" face-smile ? Batch wird durch einen "Interpreter" gejagt und nicht "kompiliert" das nur mal so nebenbei ...

Das was du offensichtlich meinst lässt sich entweder mit externen Batch Skripts machen die du in der Batch mit Parametern aufrufst (call myfunctionbatch.cmd) oder auch in der Batch selbst mit einem Call auf Sprungmarken, ebenfalls mit Parametern anpassbar ...
@echo off
call :myfunction "BlaBla" BlaBlub"  
pause
goto :eof

:myfunction
echo Funktions-Parameter 1 hat den Wert %1
echo Funktions-Parameter 2 hat den Wert %2
exit /b
Injektion von Text in Batchdatei
Ich geb dir gleich ne Spritze voll mit Buchstaben face-big-smile.

Da ich ja gerne in Batch rumspiele
Immer noch? Haaallooooo wir sind im "21 Jahrhundert", da gibt es mittlerweile hundert ach zig Millionen bessere Möglichkeiten und Skript-Sprachen mit denen man seine Zeit verbringen kann ...
Shadowminder
Shadowminder 17.05.2020 um 13:26:03 Uhr
Goto Top
Hallo killpid,

Ich schrieb Compiler, da ich mithilfe von Batch eine andere Batch "bearbeiten" will, sog. Compilieren.

Falls ich mich falsch ausgedrückt habe, hier ein konkreteres Beispiel:

Eine Beliebige Batch-Datei mit Abkürzungen:

@echo off

#beliebige_Abkürzung

pause
.....restliches script.....

eine andere batch wird aufgerufen, die den script der ersten Batch in das hier umwandelt:

@echo off

beliebiger
MEHRZEILIGER
script

pause
.....restliches script.....

Versteht man es jetzt?
144260
144260 17.05.2020 um 14:32:34 Uhr
Goto Top
Siehe oben.
.
Shadowminder
Shadowminder 17.05.2020 um 14:50:04 Uhr
Goto Top
ich meinte eig. sowas in der art:

@echo off
echo.
set /p Datacode=What file should be launched:

setlocal enabledelayedexpansion
FOR /f "usebackq delims=" %%f IN (%Datacode%) DO (  


set "a=%%f"  

set a=!a:-befehl=Mehrzeiliger Text!


echo !a!>>%Datacode%.bat
)
call %Datacode%.bat
del %Datacode%.bat
rubberman
Lösung rubberman 17.05.2020 um 15:29:30 Uhr
Goto Top
Schau mal ob dir sowas weiterhilft:
Makros in Batch - Wie man Code in Umgebungsvariablen nutzen kann

test.bat
@echo off &setlocal
:: alert Macro in die Umgebung laden
call "my_macro.bat"  
:: und ausführen
%alert% Hallo Welt!
pause

my_macro.bat
:: Kein echo off und Co. hier.
:: Linefeed Zeichen erzeugen und \n Variable bauen, um mehrzeiligen Code in eine Variable zu bekommen
set LF=^


set ^"\n=^^^%LF%%LF%^%LF%%LF%^^" &REM Zwei Leerzeilen erforderlich!  

:: alert Macro (nichts andere als eine Umgebungsvariable, die ausführbaren Code enthält)
set alert=for /l %%i in (1 1 2) do if %%i==2 (%\n%
  setlocal EnableDelayedExpansion%\n%
  if defined var echo !var:~1!%\n%
  endlocal%\n%
  pause%\n%
  goto :eof%\n%
) else set var=
Steffen
Shadowminder
Shadowminder 17.05.2020 um 15:58:06 Uhr
Goto Top
Irgendwie kommt mir die vorgehenswiese bekannt vor aber irgendwie raff ich´s nicht... lul.

Gibt es ne Anleitung für Denkschwache? :D

Aber das ist schonmal ein anfang.
rubberman
Lösung rubberman 17.05.2020 um 16:44:01 Uhr
Goto Top
Hab ich verlinkt. Da ich das seinerzeit schon Step für Step erklärt habe, weiß ich nicht wie ich das noch besser verdeutlichen könnte face-confused