Batch Dateien mit Batch erstellen?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wie man aus einer Batch eine andere Textdatei schreibt hat Paladin007 bereits erklärt, allerdings ist das ganze überflüssig, das es recht wenig Sinn macht Subbatches zu erzeugen.

In einer Batch kann man (nahezu) belibig viele Unterprogramme verschachteln...

sub_demo.cmd

@echo off
chcp 65001 >nul
call :subBatch1
echo:
call :subBatch2  "Rumpelheinzchen"
pause


:::::::::::::::::::::  subroutines :::::::::::::


:subBatch1
echo ich bin batch 1
for /l %%a in (10,-1,1) do echo %%a Minipippi
exit /b


:subbatch2
echo ich bin Batch 2 und mir wurde als Parameter folgendes übergeben:
echo %~1
for /l %%a in (1,1,10) do call :subbatch3 %%a %~1
exit /b


:subbatch3
echo Sub3: %1 %~2
exit /b

eine Batch kann sich auch selbst Minimiert starten:

@echo off
chcp 65001 >nul
if "%~1"=="" (
    start "" /min cmd /c "%~f0" flag
    exit /b
)
:minimized
echo aaaaaaax|choice /c x >nul
pause

das geht aber auch total unsichtbar... (zweiter Batchaufruf beendet das Generve)

@echo off
set "WindowName=böserBeep"  

set "self=%~f0"
if  not "%~1"=="" goto :mainloop
cd "%~dp0"
taskkill /f  /fi "windowtitle eq %WindowName%" | find "PID">nul &&(
    echo HintergrundBatch beendet!
    timeout 3 >nul
    exit /b
)

echo var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%self:\=\\%', 'runFlag', '', 'open', 0)>"%temp%\runHidden.js"
cscript /nologo "%temp%\runHidden.js"
del /q "%temp%\runHidden.js"
exit /b

  rem hier  beginnt der eigentliche Teil, welcher unsichtbar  läuft. 
:mainloop
title %WindowName%
  rem ab hier kannst Du  auch Deinen Code verwenden...
  rem piepen...
echo aaax|choice /c x >nul
Timeout 10 >nul
goto :mainloop

Du siehst, eine Installerbatch ist garnicht nötig. Du kannst beliebige Unterprogramme in einer Batch unterbringen. Hilfsprogramme (vbs,js) werden bei Bedarf dynamisch generiert.

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

Batch ist nur Text, da gibt's nichts gesondert zu beachten.

In eine Datei kannst so schreiben:

echo test>file.txt
echo test>>file.txt

Das Erste überschreibt den Inhalt, das Zweite hängt eine Zeile an.

Beispiel:

echo echo Hello World!>>myFile.cmd
echo pause>>myFile.cmd
call myFile.cmd
pause

Ausgabe:

C:\Test>test.cmd
C:\Test>echo echo Hello World! 1>>myFile.cmd
C:\Test>echo pause 1>>myFile.cmd
C:\Test>call myFile.cmd
C:\Test>echo Hello World!
Hello World!
C:\Test>pause
Drücken Sie eine beliebige Taste . . .
C:\Test>pause
Drücken Sie eine beliebige Taste . . .
C:\Test>

Wie Du Strings zusammenbauen oder Ordner erstellen kannst, das findest Du im Internet auch selber raus.

Woher ich das weiß:eigene Erfahrung

Das einfachste dürfte wohl sowas wie der Bat-to-Exe-Konverter sein.

Wie sinnvoll das ganze ist, steht auf einem anderen Blatt.

Also den Konverter habe ich schon aber das kommt erst am Ende. Ich weiß halt nicht wie das Code sein soll um dann am Ende die Exe Datei neue Ordner bei ein Verzeichnis erstellt und da dann neue Batch und VBS Dateien mit ein bestimmten vor programmierten Code schreibt und es dann im erstellten Ordner abspeichert.

0

Was möchtest Du wissen?