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

For Schleife mit Variable setzen und Wert kürzen

Frage Entwicklung Batch & Shell

Mitglied: presidente

presidente (Level 1) - Jetzt verbinden

19.03.2013 um 09:28 Uhr, 2033 Aufrufe, 5 Kommentare

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
Mitglied: colinardo
19.03.2013 um 09:50 Uhr
Stichwort: delayed expansion
01.
setlocal ENABLEDELAYEDEXPANSION 
02.
for /F "delims=" %%b in ('dir /b d:\Files\00001000\*.data') do ( 
03.
   set metaid=%%b 
04.
   set metaid=!metaid:~9,8! 
05.
)
Grüße Uwe
Bitte warten ..
Mitglied: presidente
19.03.2013 um 10:12 Uhr
Vielen Dank Uwe,
funkltioniert soweit. Wie kann ich nun die gesetzten Werte wieder in eine Datei schreiben (c:\kurze_namen.txt), damit ich das sql-script aufrufen kann, denn das rufe ich dann so auf:

@for /F %%c in (c:\kurze_namen.txt) do call %pfad%\SQL\SQL-Command.cmd %%c

so klappt es jedenfalls nicht:

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

Echo läuft immer ins leere

was bewirkt eigentlich setlocal ENABLEDELAYEDEXPANSION ??

Vielen Dank
Bitte warten ..
Mitglied: colinardo
19.03.2013, aktualisiert um 10:20 Uhr
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:

01.
setlocal ENABLEDELAYEDEXPANSION 
02.
for /F "delims=" %%b in ('dir /b %suchpfad%\%ordner%\*.data') do ( 
03.
set dateiname=%%b 
04.
set dateiname=!dateiname:~9,8! 
05.
echo !dateiname! >>c:\kurze_namen.txt 
06.
)
Bitte warten ..
Mitglied: presidente
19.03.2013 um 10:34 Uhr
Hallo Colinardo,

vielen Dank für die schnelle Hilfe, funktioniert perfekt.

Für was steht eingentlich setlocal ENABLEDELAYEDEXPANSION , was bewirkt das genau ?

Danke
Bitte warten ..
Mitglied: colinardo
19.03.2013, aktualisiert um 10:38 Uhr
Zitat von presidente:
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.
Bitte warten ..
Neuester Wissensbeitrag
Microsoft Office

MS Office Excel - Formel wird angezeigt, aber nicht berechneter Wert!

Tipp von holli.zimmi zum Thema Microsoft Office ...

Ähnliche Inhalte
PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Batch & Shell
Variable setzen können während timeout (3)

Frage von DontFlameMeITryMyBest zum Thema Batch & Shell ...

Batch & Shell
gelöst Variable über Wert aussuchen (2)

Frage von CreatorX zum Thema Batch & Shell ...

Batch & Shell
gelöst FOR Schleife mit Unterverzeichnissen, die Ausgabe kürzen (tokens evtl.) (5)

Frage von Kriegstreiber zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (19)

Frage von Winuser zum Thema Hyper-V ...

SAN, NAS, DAS
gelöst Synology Version 6.1 Probleme (17)

Frage von Hendrik2586 zum Thema SAN, NAS, DAS ...

Router & Routing
gelöst IP Kamera für drei unabhängige Netzwerke (15)

Frage von ProfessorZ zum Thema Router & Routing ...

Windows Server
gelöst Rechte als Admin vergeben - Zugriff verweigert (14)

Frage von Ghost108 zum Thema Windows Server ...