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

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

12343212 
Beitragsersteller
 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

12343212 
Beitragsersteller
 06.10.2023, 10:39

Danke

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 
Beitragsersteller
 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

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.

12343212 
Beitragsersteller
 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.

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: