Programmieren, script, batch was ist falsch?

3 Antworten

erstmal muss alles, was Leerzeichen und/oder Klammern enthalten könnte innerhalb von "Gänsefüßchen" verwendet werden.

zB.

set "quelle=H:\TEST\Microsoft Word-Dokument (neu).docx"

die Zeile zum setzen des Ziels ist falsch es muss so aussehen:

set  "ziel=H:\TEST1"

...und wieder die "Gänsefüßchen im Copy-Befehl

copy "%quelle%" "%ziel%"

bei verketteten if-else anweisungen mus das else in der gleichen Zeile stehen wie die schließende Klammer das vorangehenden Anweisungsblocks (bei zahlenvergleichen keine "Quotes", dafür equ verwenden :

if  %NumVar% equ 2 (
    echo tue was
) else (echo  was anderes)

zu guter letzt, für Menüabfragen verwendet man choice.

@echo off
chcp 65001 >nul &rem Umlaute darstellen


echo Welche Datei möchtest du kopieren?
echo 1. TEST.xlsx
echo 2. Microsoft Word-Dokument (neu).docx
echo X.  Abbruch
choice /c 12X
if %ErrorLevel% equ 1 (set "quelle=H:\TEST\TEST.xlsx" &goto :doIt)  &rem wegspringen , sonst würden sinnloserweise auch die anderen ifs  noch abgearbeitet ...kein muss aber sinnvoll
if %ErrorLevel% equ 2 (set "quelle=H:\TEST\Microsoft Word-Dokument (neu).docx" &goto :doIt)
if %ErrorLevel% equ 3 (
    echo und Tschüss...
    timeout 3 >nul
    exit /b
)


:doIt 
set "ziel=H:\TEST1"
copy "%quelle%" "%ziel%"
echo Die Datei wurde erfolgreich kopiert.
pause

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Hi, der Fehler ist, dass du kein if im Programm hast.
Versuchs mal hiermit:

if "%auswahl%"==1 (
  set quelle=H:\TEST\TEST.xlsx
) else if "%auswahl%"==2 (
  set quelle="H:\TEST\Microsoft Word-Dokument (neu).docx"
) else (
  echo Ungültige Auswahl. Bitte versuche es erneut.
  exit /b
)

Liebe Grüße

Woher ich das weiß:Berufserfahrung
12343212 
Fragesteller
 06.10.2023, 10:39

Danke

0
12343212 
Fragesteller
 06.10.2023, 10:40

Es zeigt keine Fehler Meldung raus aber die Datei befindet sich nicht im Ziel Ordner könntest du mir dabei helfen das so umzuschreiben das die datei auch im Ziel Ordner ankommt

0
Erzesel  06.10.2023, 15:12

das ganze herumgerödel mit else wird jedoch überflüssig wenn man garnnicht erst unzulässige Eingaben zulässt.

mit choice kann der Nutzer nur die vorgegebenen Eingaben tätigen

0

Schau Dir dein If/else if an.

Versuche es mal in der Art:

if "%auswahl%"=="1" (

set quelle=H:\TEST\TEST.xlsx

) else if "%auswahl%"=="2" (

set quelle=H:\TEST\"Microsoft Word-Dokument (neu).docx"

) else (

echo Ungültige Auswahl. Bitte versuche es erneut.

exit /b

)

12343212 
Fragesteller
 06.10.2023, 10:41

Es zeigt keine Fehler Meldung raus aber die Datei befindet sich nicht im Ziel Ordner könntest du mir dabei helfen das so umzuschreiben das die datei auch im Ziel Ordner ankommt

0
odine  06.10.2023, 10:55
@12343212

Versuchs mal mit

set /p ziel=Bitte gib den Zielpfad ein (z. B. H:\TEST1):

copy "%quelle%" "%ziel%"

echo Die Datei wurde erfolgreich kopiert.

0
12343212 
Fragesteller
 06.10.2023, 11:06
@odine

echo Welche Datei möchtest du kopieren?

echo 1. TEST.xlsx

echo 2. Microsoft Word-Dokument (neu).docx

 

set /p auswahl=Bitte gib die Nummer der gewünschten Datei ein:

 

if "%auswahl%"=="1" (

set quelle=H:\TEST\TEST.xlsx

) else if "%auswahl%"=="2" (

set quelle=H:\TEST\Microsoft Word-Dokument (neu).docx

) else (

echo Ungültige Auswahl. Bitte versuche es erneut.

exit /b

)

 

set p/ ziel=H:\TEST\Neuer Ordner:

copy "%quelle%" "%ziel%"

echo Die Datei wurde erfolgreich kopiert.

0
odine  06.10.2023, 11:07
@12343212

Schau Dir die Zeile
set p/ ziel=H:\TEST\Neuer Ordner:
an, besser wäre sicher
set /p ziel=H:\TEST\Neuer Ordner:

1