1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Batch-Datei Abfrage

Discussion in 'Windows XP / Server 2003/2008 / Vista' started by h3llghost, May 28, 2007.

Thread Status:
Not open for further replies.
  1. h3llghost

    h3llghost Kbyte

    Hallo Leute

    ich würde gerne eine Batch-Datei schreiben, die nach Werten fragt.
    Beispiel:

    Öffne die Datei test.bat und dann erscheint "Geben Sie bitte eine Zahl ein:".
    Die gebe ich dann ein und er rechnet dann mit dieser Zahl weiter.
    Wie kann ich das machen?
     
  2. Hnas2

    Hnas2 Ganzes Gigabyte

    Das kommt drauf an, ob es sich um ein aktuelles cmd.exe oder command.com handelt.

    Unter cmd lautet der Befehl:

    Code:
    set /p <variable>= 
    
    unter command lautet der Befehl:

    Code:
    choice 
    
     
  3. h3llghost

    h3llghost Kbyte

    Und wie kann ich unter cmd überprüfen ob der String wirklich ein String ist?
    Und wie Kann ich den String in Substrings teilen?
     
  4. Hnas2

    Hnas2 Ganzes Gigabyte

    Code:
    set /?
    gibt dir Auskunft über die Möglichkeiten dieses Befehls.
     
  5. h3llghost

    h3llghost Kbyte

    Etwas viel was? :D
    Deswegen hoffe ich ja dass du mir ebend sagen kannst wie das geht ...
     
  6. Eric March

    Eric March CD-R 80

    Aus der Hosentasche - was man mit dme Datum anstellen könnte:

    if %date:~2,1% == . goto TMJ
    ::Format JJJJ-MM-TT (international)
    set Jahr=%date:~0,4%
    set Monat=%date:~5,2%
    set Tag=%date:~8,2%
    goto weiter
    :TMJ
    ::Foramt TT.MM.JJJJ (lokal)
    set Jahr=%date:~6,4%
    set Monat=%date:~3,2%
    set Tag=%date:~0,2%
    Setzt in Abhängigkeit des lokalen Datumsformats Jahr, Monat, Tag auf die richtigen Werte.

    Oder:
    set Zeit=%time:~0,8%
    schneidet die mit Komma abgetrennten Sekunden samt desselben ab.

    Viel Spaß; kreativ werden musst du selbst :)
     
  7. Hnas2

    Hnas2 Ganzes Gigabyte

    Weißt du wie vielschichtig und umfangreich Batch-Programmierung ist? Da muss man sich richtig reinknieen, wenn man da was komplexeres erstellen möchte. Das ist auch nicht einfach mit zwei, drei Sätzen erklärt. Manchmal ist es auch ganz gut, wenn man auf Befehle zurückgreifen kann, die eigentlich noch aus der DOS-Zeit stammen, aber unter cmd funktionieren.
     
  8. h3llghost

    h3llghost Kbyte

    Na dann :D
    Habe es nicht so verstanden, dass ich mit set auch solche Sachen machen kann ...
    Ich dachte dafür gibt es eine eigene Funktion :sorry:
     
  9. Eric March

    Eric March CD-R 80

    Siehstemal, war gar keine eigene Funktion nötig.

    Nichtsdestoweniger: Das geht so nur unter XP und und CMD. Das schreibe ich, weil wir auch krampfhaft diesen CMD-fähigen Code vermeiden müssen, auch wenn er viel vereinfacht, weil wir noch reichlich 9x-Systeme zu versorgen haben…
     
  10. h3llghost

    h3llghost Kbyte

    Ich brauch es aber halt nur bis jetzt für Windows 2003 Server - Systeme!

    Ich bräuchte nun aber schon HILFE!

    Ich habe folgende Datei:

    Code:
    <VirtualHost 85.114.130.65:80>
        ServerName www.expression-liga.de
        ServerAlias expression-liga.de *.expression-liga.de
        ServerAdmin webmaster@expression-liga.de
        DocumentRoot "D:\htdocs\egl"
        ErrorLog logs/egl-error_log
        CustomLog logs/egl_log common
    </VirtualHost>
    
    <VirtualHost 85.114.130.65:80>
        ServerName phpmyadmin.expression-liga.de
        ServerAdmin webmaster@expression-liga.de
        DocumentRoot "D:\htdocs\phpmyadmin"
        ErrorLog logs/phpmyadmin-error_log
        CustomLog logs/phpmyadmin_log common
    </VirtualHost>
    
    <VirtualHost 85.114.130.65:80>
        ServerName www.expression-hlstatsx.de
        ServerAlias expression-hlstatsx.de *.expression-hlstatsx.de
        ServerAdmin webmaster@expression-hlstatsx.de
        DocumentRoot "D:\htdocs\hlx\haupt"
        ErrorLog logs/hlx/haupt-error_log
        CustomLog logs/hlx/haupt_log common
    </VirtualHost>
    
    <VirtualHost 85.114.130.65:80>
        ServerName aa1.expression-hlstatsx.de
        ServerAdmin webmaster@expression-hlstatsx.de
        DocumentRoot "D:\htdocs\hlx\aa1"
        ErrorLog logs/hlx/aa1-error_log
        CustomLog logs/hlx/aa1_log common
    </VirtualHost>
    Er soll nun den letzten Eintrag kopieren und die aa1 durch eine Variable ersetzen. Sprich wenn es fertig ist sollte es so aussehen:

    Code:
    <VirtualHost 85.114.130.65:80>
        ServerName www.expression-liga.de
        ServerAlias expression-liga.de *.expression-liga.de
        ServerAdmin webmaster@expression-liga.de
        DocumentRoot "D:\htdocs\egl"
        ErrorLog logs/egl-error_log
        CustomLog logs/egl_log common
    </VirtualHost>
    
    <VirtualHost 85.114.130.65:80>
        ServerName phpmyadmin.expression-liga.de
        ServerAdmin webmaster@expression-liga.de
        DocumentRoot "D:\htdocs\phpmyadmin"
        ErrorLog logs/phpmyadmin-error_log
        CustomLog logs/phpmyadmin_log common
    </VirtualHost>
    
    <VirtualHost 85.114.130.65:80>
        ServerName www.expression-hlstatsx.de
        ServerAlias expression-hlstatsx.de *.expression-hlstatsx.de
        ServerAdmin webmaster@expression-hlstatsx.de
        DocumentRoot "D:\htdocs\hlx\haupt"
        ErrorLog logs/hlx/haupt-error_log
        CustomLog logs/hlx/haupt_log common
    </VirtualHost>
    
    <VirtualHost 85.114.130.65:80>
        ServerName aa1.expression-hlstatsx.de
        ServerAdmin webmaster@expression-hlstatsx.de
        DocumentRoot "D:\htdocs\hlx\aa1"
        ErrorLog logs/hlx/aa1-error_log
        CustomLog logs/hlx/aa1_log common
    </VirtualHost>
    
    <VirtualHost 85.114.130.65:80>
        ServerName aa2.expression-hlstatsx.de
        ServerAdmin webmaster@expression-hlstatsx.de
        DocumentRoot "D:\htdocs\hlx\aa2"
        ErrorLog logs/hlx/aa2-error_log
        CustomLog logs/hlx/aa2_log common
    </VirtualHost>
     
  11. Hnas2

    Hnas2 Ganzes Gigabyte

    Für eine solche Aufgabe halte ich eine Batch-Programmierung als ungeeignet. Du musst ja die Datei komplett analysieren, den letzten Block erkennen, nochmal hinzukopieren und dann ändern.
    Für diese Aufgabe dürfte eher Basic geeignet sein.
    Oder schau dir mal RunCMD an. Aber auch da muss man sich richtig einarbeiten.
     
  12. h3llghost

    h3llghost Kbyte

    Ok ...
    Das habe ich im Nachhinein auch gedacht ...
    Kann man das dann nicht so machen:

    1. Ans Ende der Datei wird eine andere Datei angehängt.
    2. Ein Befehl sucht den String "xxx" und ersetzt ihn mit einer Variable?
     
  13. Hnas2

    Hnas2 Ganzes Gigabyte

    Mit den üblichen cmd-Befehlen ist das nicht machbar.
     
  14. h3llghost

    h3llghost Kbyte

    Ok danke ...
    Kennst du dich auch mit RunCMD aus?
    Wie kann ich einen normalen CMD-Befehl wie net stop und net start in einer RunCMD-Datei benutzen?
     
  15. Hnas2

    Hnas2 Ganzes Gigabyte

    Hast du dir das Programm überhaupt schon angesehen? Es hat übrigens eine sehr umfangreiche Hilfe.

    In diesem Programm ist es möglich, jede ausführbare Datei mit einer Befehlszeile zu starten, wobei es unterschiedliche Aufrufmethoden gibt.
     
  16. h3llghost

    h3llghost Kbyte

    Ich bin sogar schon dabei einen Skript zu schreiben:

    Code:
    Input "Referenz:"
    Append httpd-vhosts.conf  
    Append httpd-vhosts.conf <VirtualHost 85.114.130.65:80>
    Append httpd-vhosts.conf ServerName %INFO%.expression-hlstatsx.de
    Append httpd-vhosts.conf ServerAlias %INFO%.expression-hlstatsx.de
    Append httpd-vhosts.conf ServerAdmin webmaster@expression-hlstatsx.de
    Append httpd-vhosts.conf DocumentRoot "D:\htdocs\hlx\%INFO%"
    Append httpd-vhosts.conf ErrorLog logs/hlx/%INFO%-error_log
    Append httpd-vhosts.conf CustomLog logs/hlx/%INFO%_log common
    Append httpd-vhosts.conf </VirtualHost>
    Weißt du zufällig wie ich das mit dem vielen Append umgehen kann?
    Und kannst du eine gute Methode bitte posten mit der ich andere Dateien ausführen kann?
     
  17. Hnas2

    Hnas2 Ganzes Gigabyte

    Der Befehl "append" schreibt immer genau eine Zeile in die Zieldatei. Also muss er in jeder Zeile stehen.
    Du kannst aber eine Variable setzen, die den append-Befehl und die Zieldatei beinhaltet:

    set schreibe=Append httpd-vhosts.conf

    und dann beginnt deine Zeile jeweils mit dieser Variablen und sieht dann so aus:

    %schreibe% <Text>
     
  18. h3llghost

    h3llghost Kbyte

    Danke danke ...
    Wie kann ich eigentlich einen String wie ab3 zu 3ab machen?
     
  19. Hnas2

    Hnas2 Ganzes Gigabyte

    Sieht so aus:


    set variable=ab3
    set x1=%$1,2$variable%
    set x2=%$3,1$variable%
    set variable=%x2%%x1%
     
  20. h3llghost

    h3llghost Kbyte

    Danke ...
    Und wie sieht es mit dem Öffnen von exe-Dateien aus?
    Sprich net start bzw. net stop?
     
Thread Status:
Not open for further replies.

Share This Page