For Schleife mit Variable setzen und Wert kürzen
Hallo, ich bin neu hier und hoffe ich bin im richtigen Forum gelandet.
Muss eine Ordnerstruktur auslesen und die Dateinamen für ein SQL-Skript kürzen, dieses wird dann aufgerufen
und dort wird die metaid verwendet.
Vorhanden sind z.B. solche Dateien:
00001999_00001957.data
00001999_00001958.data
00001999_00001959.data
...
Immer in der gleichen Länge
Die metaid soll jeweils so gesetzt werden:
metaid=
00001957
00001958
00001959
...
Die Routine funktioniert leider nicht so, ist die Syntax falsch ? Mit Sub-Routinen (call :sub1) kann ich nicht arbeiten, weil vorher schon
eine for Schleife läuft und somit funktioniert :EOF nicht oder gibt evtl :EOF1 ???
for /F "delims=" %%b in ('dir /b d:\Files\00001000\*.data') do set metaid=%%b:~9,8%
:~9,8%
ab der 9. Stelle anfangen und nur 8 Stellen nehmen.
Hat jemand eine Idee ?
Veilen Dank
Stefan
Muss eine Ordnerstruktur auslesen und die Dateinamen für ein SQL-Skript kürzen, dieses wird dann aufgerufen
und dort wird die metaid verwendet.
Vorhanden sind z.B. solche Dateien:
00001999_00001957.data
00001999_00001958.data
00001999_00001959.data
...
Immer in der gleichen Länge
Die metaid soll jeweils so gesetzt werden:
metaid=
00001957
00001958
00001959
...
Die Routine funktioniert leider nicht so, ist die Syntax falsch ? Mit Sub-Routinen (call :sub1) kann ich nicht arbeiten, weil vorher schon
eine for Schleife läuft und somit funktioniert :EOF nicht oder gibt evtl :EOF1 ???
for /F "delims=" %%b in ('dir /b d:\Files\00001000\*.data') do set metaid=%%b:~9,8%
:~9,8%
ab der 9. Stelle anfangen und nur 8 Stellen nehmen.
Hat jemand eine Idee ?
Veilen Dank
Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 203548
Url: https://administrator.de/contentid/203548
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
5 Kommentare
Neuester Kommentar
ENABLEDELAYEDEXPANSION bewirkt die verzögerte Auflösung von Variablen. Um dies zu nutzen musst du innerhalb der FOR-Schleife anstatt von %VARIABLE% --> !VARIABLE! schreiben, also anstatt Prozentzeichen, Ausrufezeichen verwenden:
setlocal ENABLEDELAYEDEXPANSION
for /F "delims=" %%b in ('dir /b %suchpfad%\%ordner%\*.data') do (
set dateiname=%%b
set dateiname=!dateiname:~9,8!
echo !dateiname! >>c:\kurze_namen.txt
)
Zitat von @presidente:
Für was steht eingentlich setlocal ENABLEDELAYEDEXPANSION , was bewirkt das genau ?
Für was steht eingentlich setlocal ENABLEDELAYEDEXPANSION , was bewirkt das genau ?
SETLOCAL:
Begins localization of environment changes in a batch file. Environment
changes made after SETLOCAL has been issued are local to the batch file.
ENABLEDELAYEDEXPANSION /DISABLEDELAYEDEXPANSION:
SETLOCAL batch command now accepts optional arguments:
ENABLEEXTENSIONS / DISABLEEXTENSIONS
enable or disable command processor extensions. See
CMD /? for details.
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
enable or disable delayed environment variable
expansion. See SET /? for details.