if/elseif dont work like expected...Sorry, this time in English
Posted: 22 Mar 2024 17:38
Within a "project" I wrote a batch suboutine, which should display help text and catch errors when calling it.
Results/Output
[There are the files: textfile.txt / textfile / textfile.pdf]
I have now tried to extend the batch program to query whether a parameter was passed in the command line. Since obviously IF DEFINDED/ IF NOT DEFINED seem to have a problem with the variable %1, I used an "intermediate variable" tempvar_param_1 in which I stored %1 with set tempvar_param_1=%~1%.
This also works, both with IF DEFINED and with IF NOT DEFINED
When called without passing parameters
So that works too.
I'm now trying to include this in the IF/ELSE block
When I call it, I get the error message: Syntax error.
Where is my mistake in thinking? Where is my error in code?
Code: Select all
if "%1"=="/help" (
ECHO Ausgabe Hilfe
cmd /k
) else if NOT exist %1 (
ECHO Datei existiert nicht^! Abbruch^!
cdm /k
) else if "%~x1"=="" (
ECHO Keine DateiErweiterung^! Abbruch^!
cdm /k
) else if NOT "%~x1"==".txt" (
ECHO DateiErweiterung ist nicht txt^! Abbruch^!
cdm /k
) else if "%~x1"==".txt" (
ECHO DateiErweiterung ist %~x1
[There are the files: textfile.txt / textfile / textfile.pdf]
Code: Select all
O:\>prog /help
Ausgabe Hilfe
O:\>prog dont.exist.txt
Datei existiert nicht Abbruch!
O:\>prog textfile
Keine DateiErweiterung! Abbruch!
O:\>prog textfile.pdf
DateiErweiterung ist nicht txt! Abbruch!
O:\>prog textfile.txt
DateiErweiterung ist .txt
This also works, both with IF DEFINED and with IF NOT DEFINED
Code: Select all
@echo off
set tempvar_param_1=%~1%
if defined tempvar_param_1 (ECHO bei IF DEFINED - Variable ist definiert) else (ECHO bei IF DEFINED - Variable ist nicht definiert)
if NOT defined tempvar_param_1 (ECHO bei IF NOT DEFINED -Variable ist nicht definiert) else (ECHO bei IF NOT DEFINDE Variable ist definiert)
Code: Select all
O:\>prog
bei IF DEFINED - Variable ist nicht definiert
bei IF NOT DEFINED -Variable ist nicht definiert
I'm now trying to include this in the IF/ELSE block
Code: Select all
@ECHO OFF
set tempvar_param_1=%~1%
if defined tempvar_param_1 (
ECHO bei IF DEFINED - Variable ist definiert
cmd /k
) else if "%1"=="/help" (
ECHO Ausgabe Hilfe
cmd /k
) else if NOT exist %1 (
ECHO Datei existiert nicht^! Abbruch^!
cdm /k
) else if "%~x1"=="" (
ECHO Keine DateiErweiterung^! Abbruch^!
cdm /k
) else if NOT "%~x1"==".txt" (
ECHO DateiErweiterung ist nicht txt^! Abbruch^!
cdm /k
) else if "%~x1"==".txt" (
ECHO DateiErweiterung ist %~x1---
Code: Select all
O:\>prog
prog
Syntaxfehler.