Batch setlocal enabledelayedextension scheint nicht zu funktionieren
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)
Kann mir jemand sagen wo genau da mein Fehler ist?
[Edit Biber] Codeformatierung [/Edit]
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)
@echo off
setlocal enabledelayedextension
echo INSERT INTO `tb_class` (`ID`, `Name`, `InheritanceID`, `Desc`) VALUES>mcp.sql
set /a i=0
echo %i%
for /F %%A in (_classes.txt) do (
set /a i += 1
echo %i%
echo ^(%i%, '%%A', 0, ''^),>>mcp.sql
)
echo %i%
pause
[Edit Biber] Codeformatierung [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179142
Url: https://administrator.de/contentid/179142
Ausgedruckt am: 05.11.2024 um 12:11 Uhr
4 Kommentare
Neuester Kommentar
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
--> 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
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
moin Biber,
Setlocal und rem sind aber die Blinden Kandidaten im CMD-Fenster, etwa so wie: echo(nix >nul
Hoffentlich kommt Timo net mit der @echo OFF Keule vorbeigeschwungen.
Gruß Phil
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
>echo setlocal enabledelayedextensions >ab.cmd &&ab ||echo Fehler! &del ab.cmd
>setlocal enabledelayedextensions
Ungültiger Parameter für den SETLOCAL-Befehl.
Fehler!
Hoffentlich kommt Timo net mit der @echo OFF Keule vorbeigeschwungen.
Gruß Phil
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...
... 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
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