Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

batch Programmierung - syntaxfehler?!

Empfohlene Antworten

Veröffentlicht

Hallo Ihr!

Ich hoffe ihr könnt mir helfen,

ich versuche ein batch zu programmieren.. Hier mal der code..

echo off

cls

echo Einleitung blablubb

Pause

if exist "C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe"

color 0A

weiter gehen solls dann mit "wenn robocopy vorhanden ist, führe robocopy.exe aus. wenn robocopy nicht vorhanden ist, kompiere es von H:\temp nach C:\Documents and Settings\benderj\Desktop\temp\ und führe es dann aus. und davon soll ichnoch ein logfile erstelllen (also ob das kopieren zB geklappt hat usw.. )

bei if exist "C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe"

zeigt er mir schon einen syntax fehler an. was ist denn falsch?

hab noch nie vorher ein abtch programmiert, vresuch mich da ein wenig durchzuwurschteln, aber das internet kanns mir irgendwie nicht gut genug erklären =(

ich hoffe ihr könnt mir helfen.

Danke!

Was für ein Fehler tritt denn auf?

Die anderen benötigten Funktionen musst du noch in einen else-Block mit hineinpacken.


IF EXIST ... (

robocopy.exe ... )

ELSE (

cp H:\ ...

)

Also ich seh dann:

Einleitung blablablubb

Drücken Sie eine beliebige Taste... (*drück*)

Syntaxfehler

mehr nicht..

Ich hab dann mal weitergetüftelt..

der code:

echo off

cls

echo Einleitung blablubb

Pause

if exist (C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe)

color 0A

C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe

else

(

xcopy /s /e /h H:\robocopy.exe C:\Documents and Settings\benderj\Desktop\temp\

color

C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe

)

echo blablubb

echo.

Pause

soo und das kommt dabei raus. :

Einleitung blablubb

Drücken Sie eine beliebige Taste . . .

Der Befehl "C:\Documents" ist entweder falsch geschrieben oder

konnte nicht gefunden werden.

Der Befehl "else" ist entweder falsch geschrieben oder

konnte nicht gefunden werden.

Unzulässige Parameteranzahl

Der Befehl "C:\Documents" ist entweder falsch geschrieben oder

konnte nicht gefunden werden.

blablubb

Drücken Sie eine beliebige Taste . . .

Ich bin nochmal einen schritt weitergekommen :D

google hilft einem soweit doch ein wenig.. aber ein paar fehler und probleme hab ich noch =(

echo off

cls

echo Einleitung blablubb

Pause

if exist (C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe C:\Documents and Settings\benderj\Desktop\temp\robo_backup.bat)

color 0A

start "Robocopy" [C:\Documents and Settings\benderj\Desktop\temp\] [robo_backup.bat]

else

(

xcopy /s /e /h H:\robocopy.exe C:\Documents and Settings\benderj\Desktop\temp\

color

start C:\Documents and Settings\benderj\Desktop\temp\robo_backup.bat

)

echo blablubb

echo.

Pause

ab dem start "robocopy" [...] funktioniert es nicht mehr.. hier was dabei rauskommt:

Einleitung blablubb

Drücken Sie eine beliebige Taste . . .

Die Datei "[C:\Documents" kann nicht gefunden werden. (?!?!!?! kann das daran liegen das ein leerzeichen zwischen documents and settings liegt? ich kann den ordner aber nicht umbenennen =/ )

Der Befehl "else" ist entweder falsch geschrieben oder

konnte nicht gefunden werden. (was is daran falsch?

Unzulässige Parameteranzahl (was für ne parameterzahl?)

blablubb

Drücken Sie eine beliebige Taste . . .

Also das programm frägt jetzt ob robocopy und robo_backup da ist . das geht..

dann soll es robo_backup öffnen, eine andere .bat die bestimmte daten sichert (die funktioniert so wie sie ist)

und irgendwie funktioniert dieser step nicht =(

Hi,

setz mal die Pfade in Hochkomma ("PFAD"). Weil du hast Leerzeichen drin. Sieht aus als würde er das EXIST nur auf C:\Documents anwenden wollen. Außerdem überprüfe mal deine Klammern. Bin mir da auf die schnelle nicht ganz sicher ob das so richtig ist.

Gruß

Also so?

echo off

cls

echo Einleitung blablubb

Pause

if exist ("C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe" "C:\Documents and Settings\benderj\Desktop\temp\robo_backup.bat")

color 0A

start "Robocopy" ["C:\Documents and Settings\benderj\Desktop\temp"] [robo_backup.bat]

else

(

xcopy /s /e /h "H:\robocopy.exe" "C:\Documents and Settings\benderj\Desktop\temp"

color

start C:\Documents and Settings\benderj\Desktop\temp\robo_backup.bat

)

echo blablubb

echo.

Pause

>>>

Einleitung blablubb

Drücken Sie eine beliebige Taste . . .

Die Datei "["C:\Documents and Settings\benderj\Desktop\temp"]" kann nicht gefunden werden.

Der Befehl "else" ist entweder falsch geschrieben oder

konnte nicht gefunden werden.

C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe überschreiben (Ja/Nein/Alle)? n (also das kopieren von robpcopy funktioniert anscheinend jetzt =) )

0 Datei(en) kopiert

blablubb

Drücken Sie eine beliebige Taste . . .

H:\>

bedeutet REM sowas wie "dann tue dies?"

dankeschön ich werds gleich mal versuchen!!!

Also ich hab jetzt mal wieder was verändert.. komm leider nur ganz langsam voran und sry falls ich mal ein wenig begriffsstutzig oder so sein sollte.. ist eigentlich nicht mein gebiet :D

test123.bat:

echo off

cls

echo Robocopy

if exist "C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe" "C:\Documents and Settings\benderj\Desktop\temp\robo_backup.bat"

(color 0A

start "Robocopy" /d"C:\Documents and Settings\benderj\Desktop\temp\robo_backup.bat")

else

(

xcopy /s /e /h "H:\robo" "C:\Documents and Settings\benderj\Desktop\temp"

color

start "Robocopy" "C:\Documents and Settings\benderj\Desktop\temp\robo_backup.bat"

)

Pause

robo_backup.bat:

robocopy "C:\Documents and Settings\benderj\My Documents" "H:\abc" /MIR /LOG+:H:\Log\log.log

und das kommt dabei raus :

Robocopy

Der Befehl "robocopy" ist entweder falsch geschrieben oder

konnte nicht gefunden werden.

H:\>

Robocopy

Der Befehl "robocopy" ist entweder falsch geschrieben oder

konnte nicht gefunden werden.

Weil RoboCopy weder im %PATH%, noch im aktuellen Verzeichnis liegt.

start "C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe" /d"C:\Documents and Settings\benderj\Desktop\temp\robo_backup.bat"

hmm.. ürsprünglich hatte ich mal den path auf C:\Documents and Settings\benderj\Desktop\temp erweitert, da ich auf die anderen ordner keinen Zugriff hab (keine Adminrechte)

aber als ich jetzt nachgeschaut habe war er nicht mehr drinnen..

also %path% "C:\Documents and Settings\benderj\Desktop\temp"

oder?

hmm.. ürsprünglich hatte ich mal den path auf C:\Documents and Settings\benderj\Desktop\temp erweitert, da ich auf die anderen ordner keinen Zugriff hab (keine Adminrechte)

Wenn du es via SET im Script gemacht hattest, geht das nicht, weil dann Path nur für die momentane Sitzung gilt und nach Beenden des Scripts die ursprüngliche Variable wieder gesetzt wurde.

also %path% "C:\Documents and Settings\benderj\Desktop\temp"

oder?

Wenn dann:

SET PATH %PATH%;"C:\Documents and Settings\benderj\Desktop\temp"

Aber das würde ich nicht machen...

Warum nicht?

Es ist ja so, ich programmier die batch datei ja nur als übung.

eigentlich wäre alles was indem temp ordner ist soll eigentlich ins windows23 wo ja automatisch der pfad ist.

und wenn ich das jetzt als übung mache kann ich doch den path auf den einen ordner erweitern, oder.. ?

und wenn ich das jetzt als übung mache kann ich doch den path auf den einen ordner erweitern, oder.. ?

Ja, ich würde das halt bloß nicht machen, sondern immer explizit aus dem Ordner aufrufen.

Grund dafür ist einfach: Angenommen du willst die Datei unter Vista ausführen, dann nimmt er die RoboCopy.exe aus dem system32-Ordner und nicht deine.

Okay...

Also wenn ich diese Batch anwenden würde, dann wäre ich auch admin, und bräcuhte den ordner temp nicht :D

aber Danke für deine Hilfe!

aber irgendwie hab ich das gefühl das mit dem if funktioniert nicht..

Robocopy

Das aktuelle Verzeichnis ist ungültig.

Der Befehl "else" ist entweder falsch geschrieben oder

konnte nicht gefunden werden.

H:\robo\robocopy.exe

H:\robo\robo_backup.bat

H:\robo\robo_backup.txt

3 Datei(en) kopiert

Drücken Sie eine beliebige Taste . . .

Das kommt dabei raus wenn der Ordner temp leer ist.

Also er macht schon das was ich sage letztenendes, aber trotzdem zeigt er mir noch fehler an..

echo off

cls

echo Robocopy

if exist "C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe" "C:\Documents and Settings\benderj\Desktop\temp\robo_backup.bat"

(color 0A

robocopy "C:\Documents and Settings\benderj\My Documents" "H:\abc" /MIR /LOG+:H:\Log\log.log)

else

(

xcopy /s /e /h "H:\robo" "C:\Documents and Settings\benderj\Desktop\temp"

color

robocopy "C:\Documents and Settings\benderj\My Documents" "H:\abc" /MIR /LOG+:H:\Log\log.log

)

Pause

Deine IF-Bedingung ist so nicht gültig.

Was willst du jetzt überhaupt mit dem Programmcode erreichen, immer noch die Anforderung aus dem ersten Post?

Dann teste mal hiermit:


echo off

set DATEI1="C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe"


if EXIST %DATEI1% (

	color 0A

	robocopy "C:\Documents and Settings\benderj\My Documents" "H:\abc" /MIR /LOG+:H:\Log\log.log) 

) else (

	xcopy /s /e /h "H:\robo" "C:\Documents and Settings\benderj\Desktop\temp"

	color 0B

	robocopy "C:\Documents and Settings\benderj\My Documents" "H:\abc" /MIR /LOG+:H:\Log\log.log

)


pause

Und benutze bitte beim nächsten Mal die CODE-Tags aus dem Editor, wenn du Quellcode posten möchtest.

probier mal:


@ECHO OFF

CLS

ECHO Robocopy 

IF EXIST "C:\Documents and Settings\benderj\Desktop\temp\robocopy.exe" 

(

[INDENT]IF EXIST "C:\Documents and Settings\benderj\Desktop\temp\robo_backup.bat" 

(

[INDENT]COLOR 0A

robocopy "C:\Documents and Settings\benderj\My Documents" "H:\abc" /MIR /LOG+:H:\Log\log.log[/INDENT]


)[/INDENT]

)

ELSE

(

[INDENT]xcopy /s /e /h "H:\robo" "C:\Documents and Settings\benderj\Desktop\temp"

color

robocopy "C:\Documents and Settings\benderj\My Documents" "H:\abc" /MIR /LOG+:H:\Log\log.log[/INDENT]


)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.