Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Einfache Batch-Datei funktinoert nicht mehr wg Syntaxfehler

Frage Entwicklung Batch & Shell

Mitglied: asd333

asd333 (Level 1) - Jetzt verbinden

07.04.2011, aktualisiert 13:08 Uhr, 4468 Aufrufe, 18 Kommentare

Hallo,

habe diese Batch-Datei, die sowohl unter Vista als auch jetzt in Windows7 bis heute tadellos ihren Dienst verrichtet hat.
Seit heute morgen kein kopieren, stattdessen ein Syntaxfehler. Was mache ich falsch?

Grüße und vielen Dank!
Andreas


@echo off
set datei=c:\Users\Andreas\Desktop\Text\Alles\Struktur.doc
set zielprefix=c:\Users\Andreas\Desktop\Text\Alles\Backups\
set zielext=doc

set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%

set std=%time:~-11,2%
set min=%time:~-8,2%
set sek=%time:~-5,2%

copy %datei% %zielprefix%%jahr%-%monat%-%tag%-%std%-%min%-%sek%-Text.doc
start %datei%


EDIT: ohne mein zutun klappt es nun auch wieder. Könnt ihr nachvollziehen warum dies ganz plötzlich mal funktioniert und mal nicht?
OS ist Win7 Prof, beinahe neues System (Office und Firefox), keine OS-Einstellungsänderungen gemacht etc.
Mitglied: Skyemugen
07.04.2011 um 10:40 Uhr
Aloha,

ganz einfach, vor 10 Uhr bekommst du als std Leerzeichen+Stundenzahl ...

greetz André
Bitte warten ..
Mitglied: asd333
07.04.2011 um 10:45 Uhr
Lieber André,

vielen Dank für Deine Antwort. Das scheint mir logisch, dass das dann nicht zu verarbeiten ist.
Gibt es da einen workaround, damit dennoch ein Dateiname mit Zeitstempel des Kopiervorgangs erstellt werden kann, 24 Std. am Tag?

Beste Grüße,
Andreas
Bitte warten ..
Mitglied: 99045
07.04.2011 um 10:48 Uhr
Zitat von asd333:
Was mache ich falsch?

Hallo und Willkommen im Forum.

Kleiner Tipp zur Fehlersuche:
fang mal mit
01.
@echo on
an und sieh dir den Ablauf deiner Batch in der Konsole an, dann siehst du die Zeile, in der ein Fehler auftritt.

Und bitte zukünftig beim Posten von Programmzeilen die < Code>- Formatierung in der Formatierungshilfe benutzen, das liest sich einfacher.

Gruß
Bitte warten ..
Mitglied: Skyemugen
07.04.2011 um 10:57 Uhr
Aloha,

klar:

01.
set "jahr=%date:~-4%" 
02.
set "monat=%date:~3,2%" 
03.
set "tag=%date:~0,2%" 
04.
 
05.
if %time:~0,2% lss 10 (set "std=0%time:~1,1%") else (set "std=%time:~0,2%") 
06.
set "min=%time:~3,2%" 
07.
set "sek=%time:~6,2%"
greetz André

edit: nicht wundern, ich mochte dein „minus” nicht in den Variablen *gg*

P.S.: Die Zieldatei in Zollzeichen zu setzen wäre generell auch nicht verkehrt (genau so wie sämtliche Pfade im Allgemeinen)
Bitte warten ..
Mitglied: asd333
07.04.2011 um 11:13 Uhr
Vielen Dank euch beiden, das hätte ich alleine niemals hinbekommen.
@99045: Werde mir beides merken, vielen Dank!
Bitte warten ..
Mitglied: Skyemugen
07.04.2011 um 11:15 Uhr
Aloha,

zusätzlich noch eine Anmerkung:

Wenn zum Testen echo on aktiv ist, dann entweder die zu testende batch aus dem cmd aufrufen oder zumindest eine pause setzen, sonst siehst du auch nichts, wenn gleich alles geschlossen wird ^_^ und irgendwann fangen wir auch hier an goto :eof zu setzen *lach*

greetz André
Bitte warten ..
Mitglied: asd333
07.04.2011 um 13:15 Uhr
Hallo,

habe nun alles genauso eingetragen, dennoch erscheint in dieser Zeile ein Syntaxfehler aufgrund von Leerzeichen.

01.
copy %datei% %zielprefix%%jahr%-%monat%-%tag%-%std%-%min%-%sek%-Text.doc
nämlich: Ursprungsordner>copy Urpsrungsdatei Zieltordner\2011 -04 -07 -13-09 -44-Text.doc Syntaxfehler.

Hier nochmal der ganze Code:

01.
@echo off 
02.
set datei=c:\Users\Andreas\Desktop\Text\Alles\Struktur.doc 
03.
set zielprefix=c:\Users\Andreas\Desktop\Text\Alles\Backups\ 
04.
set zielext=doc 
05.
 
06.
set jahr=%date:~-4%  
07.
set monat=%date:~3,2%  
08.
set tag=%date:~0,2%  
09.
 
10.
if %time:~0,2% lss 10 (set std=0%time:~1,1%) else (set std=%time:~0,2%)  
11.
set min=%time:~3,2%  
12.
set sek=%time:~6,2% 
13.
 
14.
copy %datei% %zielprefix%%jahr%-%monat%-%tag%-%std%-%min%-%sek%-Text.doc 
15.
start %datei%
Bitte warten ..
Mitglied: 99045
07.04.2011 um 13:33 Uhr
Hi,

Zitat von asd333:
habe nun alles genauso eingetragen, dennoch erscheint in dieser Zeile ein Syntaxfehler aufgrund von Leerzeichen.
01.
copy %datei% %zielprefix%%jahr%-%monat%-%tag%-%std%-%min%-%sek%-Text.doc

Wenn in einem Pfad ein Leerzeichen enthalten ist, musst du den Pfad in Anführungszeichen setzen.
01.
copy %datei% "%zielprefix%%jahr%-%monat%-%tag%-%std%-%min%-%sek%-Text.doc"
Bist du sicher, dass hinter den Zahlen jeweils ein Leerzeichen steht?
nämlich: Ursprungsordner>copy Urpsrungsdatei Zieltordner\2011 -04 -07 -13-09 -44-Text.doc Syntaxfehler

Gruß
Bitte warten ..
Mitglied: Skyemugen
07.04.2011 um 13:44 Uhr
Aloha,

my mistake, ich habe den Bug der Forensoftware nicht bedacht und glatt die sonst immer gesetzten Zollzeichen bei den set var=wert vergessen hinzuzufügen; habe dies nun nachgeholt.

greetz André

@99045, ja ich denke, er ist sich sicher, denn die Forensoftware schiebt gerne noch ein Leerzeichen hinterher (kannst du auch im Code überprüfen ^_^ bei ihm sind es dann schon zwei Leerzeichen, hehe)

interessant, dass hinter den Sekunden kein Leerzeichen gesetzt wurde (bzw. hinter set sek soundso)
Bitte warten ..
Mitglied: asd333
07.04.2011 um 13:47 Uhr
Hallo,
ja, Leerzeichen stehen zwischen Jahr, Monat, Tag und Minute ein Leerzeichen.
Da das aber ein rein kosmetisches Problem ist, wenn man die Dateinamen in "" setzt, passt das.
Mich wunderte es nur, vor allem, weil es bei Stunden und Sekunden nicht der Fall ist.
Aber gut, ich bin zufrieden, das erleichtert mir sooo viel Arbeit. Vielen Dank.
Andreas
Bitte warten ..
Mitglied: jeb-the-batcher
07.04.2011 um 15:09 Uhr
Hallo,

noch eine Anmerkung, bei unerwarteten Leerzeichen ist vermutlich der Leerspeicher übergelaufen

Um dies zu verhindern empfiehlt es sich Zuweisungen immer in Anführungszeichen zu setzen.

Also
01.
set "monat=%date:~3,2%"
Das vermeidet ein ungewolltes anhängen von Leerzeichen die (unsichtbar) hinter dem letzten % liegen könnten.
Bei der Variante mit Anführungszeichen wird nur alles bis zum letzten " in die Variable geschoben, was nach dem letzten " wird automatisch entfernt

Gruß
jeb
Bitte warten ..
Mitglied: asd333
07.04.2011 um 15:19 Uhr
Herzlichen Dank für euere Mühen, mit den Leerzeichen hat alles geklappt und ich steig jetzt bei Batch&Shell voll durch. ;)
Grüße,
Andreas
Bitte warten ..
Mitglied: bastla
07.04.2011 um 16:59 Uhr
@jeb
Funktioniert noch besser bei Verwendung einer geraden Anzahl von Anführungszeichen ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
07.04.2011 um 17:05 Uhr
@bastla
Zitat von bastla:
@jeb
Funktioniert noch besser bei Verwendung einer geraden Anzahl von Anführungszeichen ...
Genauer gesagt, bei einer geraden Anzahl größer als 1.
Nun aber genug der versteckten Hinweise...

Grüße
Biber
Bitte warten ..
Mitglied: bastla
07.04.2011 um 17:11 Uhr
[OT]
@Biber
Genauer gesagt, bei einer geraden Anzahl größer als 1.
Dass Du schon wieder alle schmutzigen Details verraten musst ...

Grüße
bastla
[/OT]
Bitte warten ..
Mitglied: jeb-the-batcher
07.04.2011 um 17:11 Uhr
@bastla, biber

Jaja ich habs gesehen und editiert

Aber genau genommen kommt es nur darauf an, dass vor dem Variabelnamen das erste Anführungszeichen ist,
dann gilt die Regel:
Es wird alles bis zum letzen Anführungszeichen genommen, aber das letzte gehört nicht mehr zum String.

Funktioniert also auch bei ungerader Anzahl

01.
set "var1=ausgeglichen wie ich bin"  ab hier wird alles geschluckt 
02.
set "var2=unausgeglichen wie eine "Frau" und dies hier wird auch geschluckt 
03.
echo #%var1%# 
04.
echo #%var2%# 
05.
-- OUTPUT --- 
06.
#ausgeglichen wie ich bin# 
07.
#unausgeglichen wie eine "Frau#
Grüße
jeb
Bitte warten ..
Mitglied: jeb-the-batcher
07.04.2011 um 17:18 Uhr
Und weils so schön ist, noch ein weiteres offensichtliches Beispiel

01.
setlocal DisableDelayedExpansion 
02.
set "var1=#a^" 
03.
set "var2=#^" ! 
04.
setlocal EnableDelayedExpansion 
05.
set "var3=#^" 
06.
set "var4=#^" ! 
07.
 
08.
set var 
09.
--- OUTPUT --- 
10.
var1=#^ 
11.
var2=#^ 
12.
var3=#^ 
13.
var4=#
Man beachte var4

Gruß
jeb
Bitte warten ..
Mitglied: 99045
07.04.2011 um 17:21 Uhr
Zitat von Biber:
Genauer gesagt, bei einer geraden Anzahl größer als 1.

Einen hätte ich da als Korinthenkacker auch noch:
Eine gerade Anzahl ist immer größer 1. Denn 0 ist eben keine Anzahl.
irgendwelche Einwände?
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Syntaxfehler, aber finde ihn nicht :(
gelöst Frage von PinkFLuffyUnicornBatch & Shell5 Kommentare

Hi, ich wollte mir mal in Batch ein kleines Menü schreiben um all meine Kleineren Scripte dort einbinden zu ...

Datenbanken
Syntaxfehler VBA
gelöst Frage von Dr.CornwallisDatenbanken6 Kommentare

Liebe Gemeinde, ich bräuchte Hilfe beim folgenden VBA Code(für Button in Access): Könnte mir bitte jemand erklären was ich ...

Datenbanken
Syntaxfehler VBA Access 2010
gelöst Frage von Dr.CornwallisDatenbanken6 Kommentare

Liebe Gemeinde, ich habe (schon wieder) einen Fehler im Code und ich komm einfach nicht drauf warum es nicht ...

Microsoft
Einfache Lösung zum Syncen von Dateien auf Tablet
Frage von hushpuppiesMicrosoft11 Kommentare

Hallo zusammen, ich hätte eine Frage zu folgendem Szenario: Bauleiter geht auf Baustelle und möchte gerne Pläne, Aktennotizen usw. ...

Neue Wissensbeiträge
Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 8 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 10 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement15 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen12 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...