Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Batch setlocal enabledelayedextension scheint nicht zu funktionieren

Frage Entwicklung Batch & Shell

Mitglied: JKoenig

JKoenig (Level 1) - Jetzt verbinden

18.01.2012, aktualisiert 19:05 Uhr, 3227 Aufrufe, 4 Kommentare

Hallo und einen schönen Abend wünsche ich

ich bringe mir im moment etwas über PHP und MySQL bei und leider bleibe ich bei einer Batchdatei, welche mir ein Skript generieren soll um mir das manuelle Eintragen von ca 1000 Werten eine Datenbank abzunehmen.

Die Batchdatei funktioniert soweit, bis auf die Tatsache das die Variable %i% nicht in der Schleife inkrementiert wird.

Den Wert lasse ich mir während der Schleife und am Ende ausgeben, die Ausgabe sind jede Menge Nullen und am Ende eine 927 (Anzahl der Zeilen in der Datei)
01.
@echo off 
02.
setlocal enabledelayedextension 
03.
echo INSERT INTO `tb_class` (`ID`, `Name`, `InheritanceID`, `Desc`) VALUES>mcp.sql 
04.
set /a i=0 
05.
echo %i% 
06.
for /F %%A in (_classes.txt) do ( 
07.
	set /a i += 1 
08.
	echo %i% 
09.
	echo ^(%i%, '%%A', 0, ''^),>>mcp.sql 
10.
11.
echo %i% 
12.
pause
Kann mir jemand sagen wo genau da mein Fehler ist?

[Edit Biber] Codeformatierung [/Edit]
Mitglied: Biber
18.01.2012 um 19:31 Uhr
Moin JKoenig,

du hast zwar in der Zeile 02 mit setlocal enabledelayedextension etwas angekündigt, nämlich die Verzögerte Variablenaufdröselung.
Aber du hat an keiner Stelle die konkreten Lös-Mir-Verzögert-Auf-Signale bei einer Variable verwendet.
Verzögert aufgelöst werden soll doch die Variable %i%
---> diese muss dann in Zeile 08 und 09 als !i! geschrieben werden. (Ausrufezeichen statt Prozentzeichen).

Außerdem hast du per Zufall mal die Redmonder PraktikantInnen beim Qualitätscoden erwischt.

Dein unabsichtlicher Tippfehler "setlocal EnableDelayedExtension" statt richtig "setlocal EnableDelayedExpansion" bleibt vollkommen ohne sichtbare Fehlermeldung.

Eine kurzfristig durchgeführter Biberscher Qualitätscheck ergab
d:\temp>setlocal enabledelayedextension 
 
d:\temp>setlocal WhateverYouWutt 
 
d:\temp>setlocal WhateverYouWutt && echo Alles Prima 
Alles Prima
--> Weder das eventuell vorstellbare Kauderwelsch "enabledelayedextension" noch das zweite Beispiel für ein unbekanntes Schlüsselwort bringen eine Fehlermeldung.
Wie in der letzten Zeile gezeigt nicht mal einen ERRORLEVEL-Wert für Fehler.
*kopfschüttel* Redmonder Coder sind schon was spezielles...

Grüße
Biber
Bitte warten ..
Mitglied: JKoenig
18.01.2012 um 20:03 Uhr
Ok funktioniert jetzt

Mal wieder zwei Dinge gelernt,
1. !var! statt %var% bei delayedexPansion verwenden
2. auch Profies machen Fehler

Grüße

JKoenig
Bitte warten ..
Mitglied: pieh-ejdsch
18.01.2012 um 20:24 Uhr
moin Biber,

du hast zwar in der Zeile 02 mit setlocal enabledelayedextension etwas angekündigt, nämlich die Verzögerte Variablenaufdröselung.
Der ist gut.

Setlocal und rem sind aber die Blinden Kandidaten im CMD-Fenster, etwa so wie: echo(nix >nul
01.
>echo setlocal enabledelayedextensions >ab.cmd &&ab ||echo Fehler! &del ab.cmd 
02.
 
03.
>setlocal enabledelayedextensions 
04.
Ungültiger Parameter für den SETLOCAL-Befehl. 
05.
Fehler!
Hoffentlich kommt Timo net mit der @ECHO OFF Keule vorbeigeschwungen.

Gruß Phil
Bitte warten ..
Mitglied: Biber
18.01.2012 um 20:56 Uhr
Moin Phil,

hast ja recht... vielleicht sollte ich meine proofs of concept am CMD-Prompt nicht ausgerechnet auf den SETLOCAL-Befehl ausweiten.

Aber ehrlich... wenn ich so nebeneinanderhalte einerseits den Hilfetext von SETLOCAL...
.... 
Der SETLOCAL-Befehl legt einen ERRORLEVEL-Wert fest, wenn ein Argument 
angegeben wird. Dieser ist 0, wenn eines der beiden gültigen 
Argumente angegeben wird, und andernfalls 1. 
.....
... und andererseits das Mir-doch-egal-Verhalten des SETLOCAL-Aufrufs in meinen Beispielen im letzten Kommentar...
-> Da musst du aber schon SEHR genau zwischen den Zeilen in der Doku lesen, um es so zu erwarten.

Aber vermutlich hatten die Jungs & Mädels auch Unterstützung von mehreren Volljuristen bei der Formulierung der Hilfetexte.

Danke dir für die Richtigstellung.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
LAN, WAN, Wireless
gelöst LACP-Trunking 2x 1GBit scheint nicht zu funktionieren (1GBit wird nicht überschritten) (11)

Frage von HtHNightwolf zum Thema LAN, WAN, Wireless ...

Batch & Shell
Neue Zeile verhindern (Batch)

Frage von clragon zum Thema Batch & Shell ...

Microsoft
Batch kombiniert mit PDFCreator

Frage von Sascha123456 zum Thema Microsoft ...

Batch & Shell
gelöst Dateinamen mit Batch-Datei ändern - Problem (9)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Windows Server
gelöst Exchange HyperV Prozessorlast (19)

Frage von theoberlin zum Thema Windows Server ...

Windows Server
Server mit Netzwerkaussetzern (18)

Frage von SarekHL zum Thema Windows Server ...

Server-Hardware
gelöst SPP von HP Abwärtskompatibel? (14)

Frage von fireskyer zum Thema Server-Hardware ...

Netzwerke
Vorschlag Hotelverkabelung (14)

Frage von FA-jka zum Thema Netzwerke ...