rjung1
Goto Top

Zahlen aus txt datei an befehl in bat. datei anhängen

Hallo zusammen,

ich habe ein kleines Problem, und da ich nun bei weiten kein Programmmierer bin auch keinen richtigen Ansatzpunkt.

Momentan habe ich eine kleine Batch Datei mit foldendem Inhalt


@echo off
if exist %USBswitchCmd.exe goto existiert
echo Datei USBswitchCmd.exe nicht gefunden!
goto ENDE
:existiert
echo die Datei USBswitchCmd.exe ist OK !
:ENDE
if exist %USBaccess.dll goto existiert1
echo Datei USBaccess.dll nicht gefunden!
goto ENDE
:existiert1
echo die Datei USBaccess.dll ist OK !
:ENDE
if exist %zeiten.txt goto existiert2
echo Datei zeiten.txt nicht gefunden!
goto ENDE
:existiert2
echo die Datei zeiten.txt ist OK !
:ENDE
echo.
echo.
:START
echo Ausführen jetzt mit einer beliebigen Taste !
echo.
echo.
pause
USBswitchCMD -p 1 2 3 4


Diese Datei Prüft am anfang ja das vorhanden sein von 3 weitren Dateien ( USBswitchCmd.exe,USBaccess.dll und zeiten.txt )
danach eine PAUSE
dann wird die Datei "USBswitchCMD" mit den Befehlen -p 1 2 3 4 ausgeführt.

Zur Erkärung :

Die "USBswitchCMD" ist eine Datei welchen eine kleine Schaltbox über USB in den Zeiten 1 2 3 und 4 sekunden immer ein - und ausschaltet. Die Zahlen sind willkürlich gewählt und können nach bedarf geändert werden.

Soweit funtzt das ganze.

Nun zum Problem.

Ich müchte die Zeiten ( 1 2 3 4 ..... ) in eine externe Datei namens " zeiten.txt" auslagern , da das kleine Tool auch von anderen umgeschreiben werden muss, diese leute jedoch nicht in der Batch Datei selbst herumschreiben sollen sondern nur in der "Zeiten.txt" .

Die Zahlen aus der "Zeiten.txt" müssten also an den Befehl "USBswitchCMD -p" angehängt und abgearbeitet werden. Die Abarbeitung selbst übernimmt ja die "USBswitchCMD.exe"

Nach der Abarbeitung wird das Programm geschlossen und fertig.


So .... kleines Problem ... -> lange erklärung face-wink

Ich hoffe jemand kann damit was anfangen und hat nen Lösungsvorschlag, Schon mal Danke im Voraus.


Grüße
Rene

Content-Key: 133616

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

Printed on: April 20, 2024 at 02:04 o'clock

Member: bastla
bastla Jan 16, 2010 at 15:18:55 (UTC)
Goto Top
Hallo rjung1 und willkommen im Forum!

Wenn die Datei "Zeiten.txt" alle Werte in der ersten Zeile enthält (diese Zeile also so:
1 2 3 4
aussieht), könntest Du die Zeile direkt in die Variable "%Zeiten%" einlesen und damit dann "USBSwitchCMD" aufrufen:
set /p Zeiten=<Zeiten.txt
USBswitchCMD -p %Zeiten%
Etwas kompakter (und leichter um zusätzliche Dateien erweiterbar) könnte der gesamte Batch dann (ungetestet) etwa so aussehen:
@echo off & setlocal
set "Dateien=USBswitchCmd.exe USBaccess.dll zeiten.txt"  

set "Fehler="  
for %%i in (%Dateien%) do if exist "%%~i" (  
    echo Die Datei "%%~i" ist OK !  
) else (
    echo Datei "%%~i" nicht gefunden!  
    set Fehler=True
)
if defined Fehler goto :eof

echo.
echo.
:START
echo Ausführen jetzt mit einer beliebigen Taste !
echo.
echo.
pause
set "Zeiten="  
set /p Zeiten=<Zeiten.txt
if not defined Zeiten echo "Keine Zeiten eingetragen!" & goto :eof  
USBswitchCMD -p %Zeiten%
Grüße
bastla

[Edit] @timobeil
edit @bastla - kaum schludere ich mal nicht so schlimm, kommst du face-wink *gg*
Sorry - mein Batch ist dafür aber auch ungetestet ... face-wink
[/Edit]
Mitglied: 60730
60730 Jan 16, 2010, updated at Oct 18, 2012 at 16:40:53 (UTC)
Goto Top
Servus & willkommen.

Schau dir mal die Formatierungshilfe an - oder "zitiere" meinen Beitrag.
Die Code Blöcke machen es einfacher face-wink

das meinen lieblingskommentar dazu mit dem echo off - lass ich mal face-wink

Als Grundlage könntest du z.b
Echo ohne Zeilenumbruch und ähnliche Spielereien benutzen.

set /p =USBswitchCMD -p >startit.cmd<nul &type zeiten.txt>>startit.cmd
start /wait "USBswitchCMD" startit.cmd  

und um deinen Ansatz etwas aufzuräumen...

:@echo off
cls
:check
for %%a in (USBswitchCmd.exe USBaccess.dll zeiten.txt) do if exist %%a echo %%a existiert) && goto start
for %%b in (USBswitchCmd.exe USBaccess.dll zeiten.txt) do if not exist %%b echo %%a existiert nicht) 
pause
goto ENDE

:START
echo Ausführen jetzt mit einer beliebigen Taste !
echo.
echo.
pause
set /p =USBswitchCMD -p >startit.cmd<nul &type zeiten.txt>>startit.cmd
start /wait "USBswitchCMD" startit.cmd  
:ende

du könntest aber auch den ganzen kram nicht einfacher machen und "nur" set /p benutzen, wenn die User eh die zeiten ändern sollen und ein Return vom laufen abgeschickt werden soll.

Gruß

edit @bastla - kaum schludere ich mal nicht so schlimm, kommst du face-wink *gg*
und das sieht auch mal wieder so aus, als ob du das schon getstet hast - ich hab schonmal die Sprungmarke ende verpasst face-wink

edit² und mindestens ein t - ein Zeilenumbruch waren noch drin - die da nicht hingehören.

Das mit dem Type kann mann auch so verwenden, dass entweder die User vorm abschicken sehen, welche Zeiten sie da starten, oder um ein Log file zu pflegen.
Member: rjung1
rjung1 Jan 16, 2010 at 16:04:53 (UTC)
Goto Top
DANKE für die schnelle und sehr gute Hilfe an alle.

das mit dem

set /p Zeiten=<Zeiten.txt
USBswitchCMD -p %Zeiten%

ist ja wirklich eine simple sache face-wink ... aber wenn man keine Ahnung von dem ganzen *gg*

Die Batch kompakter zu machen ist auch super. Jetzt war ich grade so weit das ich mein zeugs einigermaßen verstanden hab, und muss merken das es doch wohl sehr aufgebläht und umständlich geschreiben war.

Ich werd mir mal die Zeilen anschauen, und versuchen alles zu verstehen.

Nochmal ein dickes DANKE

und weils so gut klappt werd ich jetzt gleich noch versuchen eine möglichkeit einzubauen die Zeiten aus der Batch heraus in die zeiten.txt schreiben zu lassen. face-wink So das quasi alles aus einer datei heraus funktioniert.

Güße
Rene