Discussion:
simples Batchprogramm
(zu alt für eine Antwort)
Bornsdale
2010-06-14 18:07:05 UTC
Permalink
Hallo Leute,
Ich verzweifle gerade an einem ganz simplen Batch Programm. Ich stehe
gerade wie der Ochse vorm Berg da. könnt ihr mir hierbei helfen?
@echo off
color CF
@echo ^G > con

set /P tag="Tag in Ziffern eingeben oder h fuer Heute: "
if %tag%==h goto heute
set /P monat="Monat eingeben in Ziffern: "
set /P jahr="Jahr eingeben : "
set eday=%Jahr%-%monat%-%tag%
md c:\eigene\%jahr%\%monat%
md c:\eigene\%jahr%\%monat\%eday%
md c:\eigene\%jahr%\%monat%\%eday%\Bilder
md c:\eigene\%jahr%\%monat%\%eday%\Funkaufzeichnung
md c:\eigene\%jahr%\%monat%\%eday%\Berichte

rem set /P erf="Alarmierung selber erfassen (j/n) :
rem if %erf%==n goto wehr
rem if %erf%==j goto selbst

rem if exist c:\eigene\%jahr%\%monat%\%eday% goto end

:heute
set /P jahr=%date:~-4%
set /P monat=%date:~-7,2%
set /P tag=%date:~-10,2%
set /P etag="%Jahr%-%monat%-%tag%"
rem if exist c:\eigene\%jahr%\%monat%\%etag% goto end



md c:\eigene\%jahr%\%monat%
md c:\eigene\%jahr%\%monat\%etag%
md c:\eigene\%jahr%\%monat%\%etag%\Bilder
md c:\eigene\%jahr%\%monat%\%etag%\Funkaufzeichnung
md c:\eigene\%jahr%\%monat%\%etag%\Berichte
color 1F
echo Verzeichnis wurde erfolgreich angelegt
pause
rem set /P erf="Alarmierung selber erfassen (j/n) :
if %erf%==n goto wehr
rem if %erf%==j goto ende
goto ende

:end
echo Verzeichnis besteht bereits
cls

:wehr
echo "C:\alarm\letzte\Fw_Amt_Born_Zug_I_[FW_Born}_100%Alarm.txt" >

"c:\eigene\%jahr%\%monat%\%eday%\Berichte\alamierungstext.txt"
goto ende
: selbst
pause

: ende
@echo ^G
cls


mein Hauptproblem ist, das die Verzeichnissenicht angelegt werden.
sondern die Verzeichnisse Bilder, Berichte und Funkaufzeichnung unter
c:\eigene\angelegt werden.
muss ich hier vllt mit "" arbeiten?
2. Problem unter :heute wird in dem ablauf die jahreszahl der monat
und der Tag nochml abgefragt dies soll allerdings nicht abgefragt
werden.

vielen Dank für eure Hilfe.
Markus Humm
2010-06-14 20:43:10 UTC
Permalink
Hallo,

lass dir doch zwischen drin mal die Variablenwerde mittels echo ausgeben
um zu kontrollieren ob wirklich das erwartete drin steht.
Könnte ja etwas unerwartetes drin stehen. Au0erdem geben die meisten
"DOS" Kommandos einen errorlevel als returncode zurück. Ggf. mal
versuchen an den heran zu kommen.

Gruß

Markus
Klaus Meinhard
2010-06-15 07:42:32 UTC
Permalink
Hi Bornsdale
Post by Bornsdale
mein Hauptproblem ist, das die Verzeichnissenicht angelegt werden.
sondern die Verzeichnisse Bilder, Berichte und Funkaufzeichnung unter
c:\eigene\angelegt werden.
Weil die entsprechenden Variablen nicht angelegt wurden? (Sprung mit
goto).
Post by Bornsdale
2. Problem unter :heute wird in dem ablauf die jahreszahl der monat
und der Tag nochml abgefragt dies soll allerdings nicht abgefragt
werden.
siehe SET /P wenn Wert leer.
--
Best Regards,

* Klaus Meinhard *
<www.4dos.info>
Jens Fittig
2010-06-15 08:49:44 UTC
Permalink
Post by Bornsdale
Hallo Leute,
Ich verzweifle gerade an einem ganz simplen Batch Programm. Ich stehe
gerade wie der Ochse vorm Berg da. könnt ihr mir hierbei helfen?
@echo off
color CF
@echo ^G > con
set /P tag="Tag in Ziffern eingeben oder h fuer Heute: "
if %tag%==h goto heute
set /P monat="Monat eingeben in Ziffern: "
set /P jahr="Jahr eingeben : "
set eday=%Jahr%-%monat%-%tag%
md c:\eigene\%jahr%\%monat%
md c:\eigene\%jahr%\%monat\%eday%
md c:\eigene\%jahr%\%monat%\%eday%\Bilder
md c:\eigene\%jahr%\%monat%\%eday%\Funkaufzeichnung
md c:\eigene\%jahr%\%monat%\%eday%\Berichte
rem if %erf%==n goto wehr
rem if %erf%==j goto selbst
rem if exist c:\eigene\%jahr%\%monat%\%eday% goto end
:heute
set /P jahr=%date:~-4%
set /P monat=%date:~-7,2%
set /P tag=%date:~-10,2%
set /P etag="%Jahr%-%monat%-%tag%"
^ ^ zuviel!

^^ das /p darf hier nicht stehen! Sonst musst du jeden per
Prompt angezeigen Variableninhalt nochmal manuell dahinter schreiben.
Du willst sicherlich hier die 4 Werte automatisch zuweisen lassen! Und
nicht nur anzeigen.
Post by Bornsdale
rem if exist c:\eigene\%jahr%\%monat%\%etag% goto end
^ ^
Wenn du oben etag="%Jahr%-%monat%-%tag%" schreibst, müssen die "
auch in der Abfrage drin sein. Weil die " werden ja mit zugewiesen.
Post by Bornsdale
md c:\eigene\%jahr%\%monat%
md c:\eigene\%jahr%\%monat\%etag%
md c:\eigene\%jahr%\%monat%\%etag%\Bilder
md c:\eigene\%jahr%\%monat%\%etag%\Funkaufzeichnung
md c:\eigene\%jahr%\%monat%\%etag%\Berichte
color 1F
echo Verzeichnis wurde erfolgreich angelegt
pause
if %erf%==n goto wehr
rem if %erf%==j goto ende
goto ende
:end
echo Verzeichnis besteht bereits
cls
:wehr
echo "C:\alarm\letzte\Fw_Amt_Born_Zug_I_[FW_Born}_100%Alarm.txt" >
"c:\eigene\%jahr%\%monat%\%eday%\Berichte\alamierungstext.txt"
goto ende
: selbst
pause
: ende
@echo ^G
cls
mein Hauptproblem ist, das die Verzeichnissenicht angelegt werden.
sondern die Verzeichnisse Bilder, Berichte und Funkaufzeichnung unter
c:\eigene\angelegt werden.
muss ich hier vllt mit "" arbeiten?
Die an o.g. Stelle sind zuviel!
Post by Bornsdale
2. Problem unter :heute wird in dem ablauf die jahreszahl der monat
und der Tag nochml abgefragt dies soll allerdings nicht abgefragt
werden.
weil du ein /P davor hast. Das heist genau das, was du nicht willst.
Nämlich "Prompte" den User nach Input.

Man sollte nicht einfach irgendwelche Scripote abschreiben und
ummodeln, sondern die einfachsten Grundlagen dazu auch erst mal
lernen.

Tip: mit "echo on" hättest du die Fehler selbst gesehen.

Abgesehen davon ist das Script absolut nicht sicher. Die Eingaben
müssen auf logische Richtigkeit geprüft werden. Sonst wird dir jeder
Blödsinn als Verzeichnisnamen angelegt.
Bornsdale
2010-06-15 23:18:54 UTC
Permalink
Ja klar, ( an die Stirn klatsch) hatte mich nur gewundert warum beim
datum das /p fehlte, und es dann ohne weiteres zu überlegen einfach
dazu geschrieben. danke ihr habt mir wirklich weitergeholfen.

Aber Jens, wie mache ich es logisch sicher?

Lesen Sie weiter auf narkive:
Loading...