Zum Inhalt springen

Diskussion:Batch-Programmierung: Batch-Befehle

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
Abschnitt hinzufügen
Aus Wikibooks
Letzter Kommentar: vor 5 Jahren von Qualitätsfreund in Abschnitt TIMEOUT

Sachen, die IMHO fehlen

[Bearbeiten]
  • Sprünge
       :BLA
       Befehl 1
       ...
       Befehl n
       GOTO BLA
      
  • Verzweigungen
    • mit if
           ...
           IF EXIST lockfile GOTO wait
           ...
          
    • mit Variablen
           ...
           GOTO Entscheidung%Zahl%
           ...
          
  • Schleifen im Windows XP- Style:
       FOR /L %X in (1,1,100) DO @echo %X 
      
  • xcopy
       xcopy c:\Eigene~1 d:\sicher /D /E /Y /I
      
Kleidersack
IF ist doch vorhanden ??? --Author 13:42, 2. Jun. 2007 (CEST)

Benutzereingaben mit ECHO

[Bearbeiten]

Mit Hilfe des echo können Sie auch Benutzereingaben durchführen. Dies wird mit Hilfe des Pipe-Operators | durchgeführt, wobei /q für Schnellformatierung steht.
Beispiel formatieren eine Diskette ohne Nachfrage:

echo.|format a: /q

Dieser Befehl funktioniert nicht! Zumindest /v "Test" musst du noch dazuschreiben, sonst hängt der PC. Wie wäre es das nächste Mal mit Ausprobieren, bevor du etwas veröffentlichst? -- Worker 10:30, 9. Jan 2006 (UTC)

Hallo bevor du unterstellst es würde nicht funktionieren wäre eine Nachfrage auf meiner Diskussionsseite nett! Außerdem funktioniert echo. bei mir sehr wohl unter WinNT 4 - ich habe SP 6a am laufen was läuft bei dir??? Hier mein Ergebnis zum format:

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Dokumente und Einstellungen\Bastie>echo.|format a: /q
Legen Sie eine neue Diskette in Laufwerk A: ein,
und drücken Sie die EINGABETASTE. Der Typ des Dateisystems ist FAT.
Formatieren mit Schnellformatierung 1.44 MB
Die Dateizuordnungstabelle (FAT) wird initialisiert...
Volumebezeichnung (11 Zeichen, EINGABETASTE für keine)? Formatieren beendet.


    1.702.400 Bytes Speicherplatz auf dem Datenträger insgesamt
    1.702.400 Bytes auf dem Datenträger verfügbar

          512 Bytes in jeder Zuordnungseinheit
        3.325 Zuordnungseinheiten auf dem Datenträger verfügbar

           12 Bits in jedem FAT-Datensatz.

Volumenummer: 9C97-297C

Weiteren Datenträger mit Schnellformatierung formatieren (J/N)?
C:\Dokumente und Einstellungen\Bastie>

--Bastie 14:01, 14. Jan 2006 (UTC)

Befehl "Exit"

[Bearbeiten]

Mit "exit /b" kann der ERRORLEVEL-Wert beim beenden gesetzt werden.

mfg, pgf

Variablen

[Bearbeiten]

Man kann statt %0% auch %0 verwenden, so ist das nicht. --Azaël 13:23, 18. Nov. 2008 (CET)Beantworten

Hinweis zu UND bzw. ODER Verknüpfung

[Bearbeiten]
Ansonsten hilft nur noch der Workaround mit einem Goto-Befehl.
 set A=true
 set B=false 
 if "%A%"=="true" call :A
 goto eof
 :A
 if "%B%"=="true" ( 
    echo A und B sind beide TRUE
    ) else ( 
     echo entweder A oder B sind nicht = TRUE 
    )

Wenn nämlich bereits A=false, gibt es gar keine Ausgabe. Hier eine andere Herangehensweise (für ODER):

REM A und B sind variable Bedingungen; C ist immer false.
set A=false
set B=true
set C=false
IF "%A%"=="true" set C=true
IF "%B%"=="true" set C=true
echo Ergebnis: A ODER B ist %C%

Ohne vorher in die Diskussion zu schauen habe ich diese Herangehensweise für UND und ODER rücksichtslos im Artikel eingefügt und das alte Beispiel aus dem gleichen Grund entfernt. Zajo 00:53, 28. Mär. 2012 (CEST)

for ... in (...) do cmd /K ( mehrere Befehle ???)

[Bearbeiten]

Im Artikel könnte man meinen dass nach einem for ... in eine mehrzeilige Befehlszeile folgen könne. Kann das jemand unter Win7 mit Beispiel bestätigen? Mir will es nicht gelingen. -- ‎213.54.170.88 16:02, 22. April 2013 (Signatur nachgetragen von: Jürgen 17:25, 22. Apr. 2013 (CEST) -- bitte künftig mit 4 Tilden ~~~~ selbst erledigen)Beantworten

START Befehl

[Bearbeiten]

Habe fast keine Ahnung von Shell-Programmierung und habe durchs Googeln den START Befehl gefunden: http://stackoverflow.com/questions/8177695/how-to-wait-for-a-process-to-terminate-to-execute-another-process-in-batch

Fehlt der in dieser Liste nicht? -- ‎89.183.11.94 16:53, 11. Dez.. 2024 (Signatur nachgetragen von: Jürgen 16:10, 24. Feb. 2015 (CET)-- bitte signiere deine künftigen Beiträge selbst mit 4 Tilden ~~~~)Beantworten

Nein, der fehlt nicht – der wichtige Hinweis oben auf der Seite sagt sowieso, dass die Liste nicht vollständig ist. Bei START handelt es sich nicht um einen Befehl speziell für die Batch-Programmierung, sondern um ein eigenständiges Kommando und wird in Wichtige DOS-Kommandos behandelt. Durch die Suchen-Funktion auf der Startseite wird auch darauf verwiesen. -- Jürgen 16:10, 24. Feb. 2015 (CET)Beantworten

Sollte nicht der Start Befehl mit den Optionen gelistet werden. Dazu habe ich folgendes im Internet gefunden. Kenne mich aber nicht mit WIKI aus um das einzufügen.

Start

 Startet ein gesondertes Fenster Eingabeaufforderung, um ein angegebenes Programm oder einen angegebenen Befehl auszuführen. Ohne Parameter öffnet start ein zweites Fenster mit einer Eingabeaufforderung.

 Syntax
 start ["Titel"] [/dPfad] [/i] [/min] [/max] [{/separate | /shared}] [{/low | /normal | /high | /realtime | /abovenormal | belownormal}] [/wait] [/b] [Dateiname] [Parameter]

 Parameter:

 "Titel" 
 Gibt den in der Titelleiste des Fensters Eingabeaufforderung anzuzeigenden Titel an

 /dPfad 
 Das Anfangsverzeichnis. 

 /i 
 Leitet die Startumgebung von Cmd.exe an das neue Fenster Eingabeaufforderung weiter. 

 /min 
 Startet ein neues minimiertes Fenster Eingabeaufforderung. 

 /max 
 Startet ein neues maximiertes Fenster Eingabeaufforderung. 

 /separate 
 Startet 16-Bit-Programme in einem separaten Speicherbereich. 

 /shared 
 Startet 16-Bit-Programme in einem freigegebenen Speicherbereich. 

 /low 
 Führt die Anweisung in der IDLE-Prioritätsklasse aus. 

 /normal 
 Führt die Anweisung in der NORMAL-Prioritätsklasse aus. 

 /high 
 Führt die Anweisung in der HIGH-Prioritätsklasse aus. 

 /realtime 
 Führt die Anweisung in der REALTIME-Prioritätsklasse aus. 

 /abovenormal 
 Startet eine Anwendung in der ABOVENORMAL-Prioritätsklasse.

 /belownormal 
 Startet eine Anwendung in der BELOWNORMAL-Prioritätsklasse. 

 /wait 
 Startet die Anwendung und wartet, bis die Anwendung beendet wird. 

/b
Startet ein neues Fenster, ohne ein neues Fenster Eingabeaufforderung zu öffnen.STRG+C wird nicht behandelt, sofern die Anwendung diese Behandlung nicht aktiviert. Verwenden Sie STRG+UNTBR, um die Anwendung zu unterbrechen.

 Dateiname 
 Bestimmt das auszuführende Programm oder den auszuführenden Befehl. 

 Parameter 
 Gibt die Parameter an, die an den Befehl oder das Programm übergeben werden sollen.

-- ‎217.91.52.191 10:35, 11. Dez.. 2024 (Signatur nachgetragen von: Jürgen 10:59, 10. Mär. 2015 (CET)-- bitte signiere deine künftigen Beiträge selbst mit 4 Tilden ~~~~)Beantworten

Kann es sein, dass Lesen nicht zu deinen Stärken gehört (unabhängig davon, ob ‎217.91.52.191 und 89.183.11.94 identisch sind oder nicht)? 8-] In meiner obigen Antwort vom 24. Feb. 2015 habe ich begründet, dass START nicht in das Kapitel "Batch-Befehle" gehört, sondern stattdessen im Kapitel Wichtige DOS-Kommandos behandelt wird. Wenn ich vergleiche, was dort bereits steht und was du eingetragen haben möchtest, sehe ich fast keine Unterschiede. Du kannst gerne auf der dortigen (!) Diskussionsseite erläutern, was dir an den bisherigen Erklärungen nicht genügt; aber hier muss es heißen: EOD = End Of Discussion. -- Jürgen 10:59, 10. Mär. 2015 (CET)Beantworten

PUSHD / POPD

[Bearbeiten]

... hier ist nur das angeführt, was auch die Hilfe bei PUSHD/? bzw. POPD/? ausspuckt. Über Sinn und Zweck dieser Befehle wird der Suchende im Unklaren gelassen. Ich habe eine Erklärung z. B. unter https://dr-luthardt.de/windows.htm?tip=push gefunden. Darf man hier auf solche Links verweisen oder gar die Inhalte hier einfügen?

--Hilli0103 02:01, 15. Apr. 2017 (CEST)Beantworten

Hallo Hilli0103, auf einer Diskussionsseite ist ein solcher Link fast immer angemessen. Auf einer Buchseite kommt es darauf an: Als Ergänzung zum eigentlichen Inhalt des Buches – wie bei ENDLOCAL – ist ein Link vor allem dann hilfreich, wenn er noch mehr Erläuterungen oder Beispiele bietet (reine Werbe-Links werden aber abgelehnt). Die Inhalte aus einem "fremden" Link dürfen normalerweise nicht hier eingefügt werden, weil damit das Urheberrecht des "fremden" Autors verletzt würde. Du darfst aber ohne Weiteres das Wissen, das du dir angeeignet hast (und sei es durch die Lektüre dieses Links), mit eigenen Formulierungen hier veröffentlichen, vor allem wenn dieses Wissen kein Spezialwissen eines M$-Programmierers ist. -- Jürgen 08:52, 15. Apr. 2017 (CEST)Beantworten

TIMEOUT

[Bearbeiten]

Praktisch jeder Befehl schreibt auf die Standardausgabe bzw. Standardfehlerausgabe. Dann muss man auch bei jedem Befehl auf die Möglichkeit hinweisen, oder eben besser gar nicht, bzw. nur da, wo es hingehört, nämlich zur Erläuterung von >. Zudem Form und Sprache waren völlig unzulänglich. Keinerlei Erklärung was da eigentlich passiert. --92.193.55.39 16:58, 15. Dez. 2019 (CET)Beantworten

Verbessern geht vor Löschen. Und den Hinweis auf >nul finde ich bei diesem Befehl sinnvoll. -- Klaus 18:35, 15. Dez. 2019 (CET)Beantworten
Sorry, es ist aber in Form und Inhalt so schlecht, dass es indiskutabel ist. Löschen ist die Verbesserung, weil es ja dort unsinnig ist. Bei diesem akzeptierten Niveau stelle ich meine Korrektur in den Programmierbüchern ein. --Qualitätsfreund 19:47, 16. Dez. 2019 (CET)Beantworten