Inputbox in Batchdatei auslesen
Hallo liebe Community,
ich benutze Windows7 und habe folgenden Code:
Wo müsste ich welchen Code einsetzen, um die Eingabe in einer .txt Datei festzuhalten? Ich komme leider nicht weiter, da ich auch fast gar keine Ahnung von Programmierung habe.
ich benutze Windows7 und habe folgenden Code:
@echo off
title Test
color 2F
mode 55,9
:: Set variable for InputBox:
set myMessage=Hallo, wie ist dein Name?
set myTitle=Bitte Namen eingeben
call :subInputBox
:: Display variable
if "%flag%"=="false" (
set myMessage=Es wurde nichts eingegeben, oder die Eingabe abgebrochen.
set myTitle=Keine Eingabe
call :subMsgBox
) else (
set myMessage=Hallo %cmdText%!
set myTitle=Begrüßung
call :subMsgBox
)
goto End
:: Start subroutine subInputBox
:subInputBox
set VBS="%Temp%\vbsInputBox.vbs"
set CMD="%Temp%\cmdVar.bat"
>> %VBS% echo Option Explicit
>> %VBS% echo Dim strText
>> %VBS% echo Dim objShell : Set objShell = CreateObject("Wscript.Shell")
>> %VBS% echo Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
>> %VBS% echo Dim objFile : Set objFile = objFSO.CreateTextFile(%CMD%)
:: Pass variable from batch to VBScript
>> %VBS% echo strText = InputBox("%myMessage%", "%myTitle%")
>> %VBS% echo if strText = vbNullString then
:: Create batch file
>> %VBS% echo objFile.WriteLine "@echo off"
>> %VBS% echo objFile.WriteLine "set flag=false"
>> %VBS% echo else
>> %VBS% echo objFile.WriteLine "@echo off"
:: Set variable in batch file
>> %VBS% echo objFile.WriteLine "set cmdText=" ^& strText
>> %VBS% echo end if
>> %VBS% echo objFile.Close
cscript %VBS% > NUL
call %CMD% > NUL
del %CMD%
del %VBS%
goto :EOF
:: End subroutine subInputBox
:: Start subroutine subMsgBox
:subMsgBox
>> %Temp%\MsgBox.vbs echo MsgBox "%myMessage%", VbInformation + VbOKOnly, "%myTitle%"
cscript %Temp%\MsgBox.vbs > NUL
del %Temp%\MsgBox.vbs
goto :EOF
:: End of subroutine subMsgBox
:: End of batch file
:End
Wo müsste ich welchen Code einsetzen, um die Eingabe in einer .txt Datei festzuhalten? Ich komme leider nicht weiter, da ich auch fast gar keine Ahnung von Programmierung habe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 386270
Url: https://administrator.de/contentid/386270
Ausgedruckt am: 23.11.2024 um 14:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
In Batch oder in VBS?
Vielleicht besser erstmal sich in Batch und in VBS weiterbilden
http://www.robvanderwoude.com/wshstart.php
http://www.robvanderwoude.com/batchfiles.php
Gruß,
Peter
Zitat von @Sensibe:
Wo müsste ich welchen Code einsetzen, um die Eingabe in einer .txt Datei festzuhalten?
Welche Eingabe meinst du denn?Wo müsste ich welchen Code einsetzen, um die Eingabe in einer .txt Datei festzuhalten?
In Batch oder in VBS?
Ich komme leider nicht weiter, da ich auch fast gar keine Ahnung von Programmierung habe.
Und, hast du denn verstanden was du dort zusammenkopiert hast und was dort jeweils passiert?Vielleicht besser erstmal sich in Batch und in VBS weiterbilden
http://www.robvanderwoude.com/wshstart.php
http://www.robvanderwoude.com/batchfiles.php
Gruß,
Peter
Hallo,
Schau dir mal den Quelltext genau an. Ist schon alles drin denn er baut mit diesem skript ja erst seine VBS.
Gruß,
Peter
Schau dir mal den Quelltext genau an. Ist schon alles drin denn er baut mit diesem skript ja erst seine VBS.
Gruß,
Peter
Hallo,
Schon in dein Skript drin.
Und wenn du in Zeile 50 ebenfalls ein REM davor setzt, bleibt auch die Datei MsgBox.vbs erhalten wo ebenfalls deine eingabe mit drin steht. Denn zaubern kann eine Batch oder VBS auch nicht. Notfalls mit mse7.exe (gehört zum Office) deine VBS Dateien dubuggen.
Du solltest dich ernsthaft mit Batch und VBS befassen.
Gruß,
Peter
[Nachtrag 18:05]
Wenn du in Zeile 46 die Umleitung nach NUL entfernst, ein Set cmdtext und darunter ein Pause setzt, kannst du im dortigen Fenster (Grün mit weisser Schrift) dann deine umgebungsvariabel CMDText sehen. Aber da du dieses Fenster ja schliesst, wird auch die umgebung damit geschlossen. Deine Zeile 46 sähe dann so aus
Wenn du also dein Eingabe.cmd von ein CMD Fenster aus startest und erst nachdem du Pause gedrückt hast ist ein set cmdtext erfolgreich denn beim starten deiner CMD Konsolenfenstersitzung ist diese Variable (CMDText) ja noch gar nicht existent. Also ist dein CMDText erst nachdem du deine Msgbox bestätigt hast auch in diesem grünen Fenster und seine Umgebung existent. Ein Manuelles set cmdtext dort zeigt es dir.
[/Nachtrag]
Schon in dein Skript drin.
Ja, ich weiß was ich da zusammenkopiert habe
Nö.und auch teilweise die Bedeutung von vielen Zeilen. Ich weiß auch was passiert,
Nö und Nö.aber leider weiß ich nicht wie ich die Eingaben, die in der InputBox eingegeben werden, speichern kann.
In deine Zeile 49 ein REM davor, dann bleibt die Datei CMDText.bat erhalten. Dort steht schon deine Eingabe drin. Und wenn du diese Batch dann ausführst steht die auch in deiner Umgebung drin. Prüfen mit set cmdtext. Solange deine Batchdateien und VBS Dateien am laufen sind wird zwar auch diese batch ausgeführt, aber die umgebung wird ja am ende wieder verlassen und die cmdtext ist wieder aus deiner Umgebung verschwunden (Standartverhalten).Und wenn du in Zeile 50 ebenfalls ein REM davor setzt, bleibt auch die Datei MsgBox.vbs erhalten wo ebenfalls deine eingabe mit drin steht. Denn zaubern kann eine Batch oder VBS auch nicht. Notfalls mit mse7.exe (gehört zum Office) deine VBS Dateien dubuggen.
Du solltest dich ernsthaft mit Batch und VBS befassen.
Gruß,
Peter
[Nachtrag 18:05]
Wenn du in Zeile 46 die Umleitung nach NUL entfernst, ein Set cmdtext und darunter ein Pause setzt, kannst du im dortigen Fenster (Grün mit weisser Schrift) dann deine umgebungsvariabel CMDText sehen. Aber da du dieses Fenster ja schliesst, wird auch die umgebung damit geschlossen. Deine Zeile 46 sähe dann so aus
cscript %VBS%
SET cmdtext
Pause
call %CMD% > NUL
[/Nachtrag]
Hallo Sensibe,
Du hast hier ein Batchscript, das ein VBScript anlegt, das wiederum ein Batchscript anlegt, in dem die Eingabe aus der InputBox des VBScripts in eine Environment-Variable übertragen wird. Das zweite Batchscript wird vom Haupt-Batchscript mit einem eigenen Environment-Block ausgeführt, das Setzen der Environment-Variablen verändert nur diesen Environment-Block, nach der Rückkehr aus dem zweiten Batchscript ist die Variable und ihr Wert nicht mehr vorhanden. Deshalb funktioniert Dein Code nicht wie gewünscht.
Wenn Du jetzt nichts verstehst, kann ich das gut nachvollziehen, denn diese Struktur ist viel zu kompliziert.
Nachdem Du in Zeile 34 die Eingabe erfasst hast, kannst Du diese mit
ausgeben (das ist VBScript-Code und muss dementsprechend mit in die VBS-Datei geschrieben werden).
Das VBScript führst Du dann so aus:
Danach hast Du die Eingabe aus der InputBox in der Variablen
Siehe auch mein Tutorial zur FOR-Schleife.
Grüße
Friemler
Du hast hier ein Batchscript, das ein VBScript anlegt, das wiederum ein Batchscript anlegt, in dem die Eingabe aus der InputBox des VBScripts in eine Environment-Variable übertragen wird. Das zweite Batchscript wird vom Haupt-Batchscript mit einem eigenen Environment-Block ausgeführt, das Setzen der Environment-Variablen verändert nur diesen Environment-Block, nach der Rückkehr aus dem zweiten Batchscript ist die Variable und ihr Wert nicht mehr vorhanden. Deshalb funktioniert Dein Code nicht wie gewünscht.
Wenn Du jetzt nichts verstehst, kann ich das gut nachvollziehen, denn diese Struktur ist viel zu kompliziert.
Nachdem Du in Zeile 34 die Eingabe erfasst hast, kannst Du diese mit
WScript.Echo strText
Das VBScript führst Du dann so aus:
set "CmdText="
for /f "delims=" %%a in ('cscript /nologo "%VBS%"') do set "CmdText=%%a"
Danach hast Du die Eingabe aus der InputBox in der Variablen
%CmdText%
zur Verfügung. Wenn der Benutzer in der InputBox nur ENTER
gedrückt hat, ist die Variable leer.Siehe auch mein Tutorial zur FOR-Schleife.
Grüße
Friemler
Oder man macht sich so eine MsgBox in dieser Variante
powershell -Executionpolicy ByPass -NoProfile -Command "Add-Type -A Microsoft.VisualBasic;return [Microsoft.VisualBasic.Interaction]::InputBox('Bitte Daten eingeben','Eingabe')" >"C:\datei.txt"