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, 2057 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Teil eines Strings als Variable setzen (2)

Frage von tHe-jAy zum Thema Batch & Shell ...

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 FOR Schleife mit Unterverzeichnissen, die Ausgabe kürzen (tokens evtl.) (5)

Frage von Kriegstreiber zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (50)

Frage von sabines zum Thema Internet ...

Router & Routing
PFsense - Netzverbindung steht, aber kein Internet vorhanden (24)

Frage von aschmid zum Thema Router & Routing ...

Windows Server
Windows 2016 Hyper-V und VHDS (18)

Frage von emeriks zum Thema Windows Server ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

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