2016-07-09 3 views
0

Diese Batch-Linie arbeitet mit vollständigen Dateinamen:Verwendung eines Platzhalters für Dateinamen im Stapelbefehl Für?

for /f "skip=3 delims=*" %%g in (cc_data_3-3-2016_15-37-19.xml cc_data_3-28-2016_0-25-36.xml) do (echo %%g >>tempfile.txt) 

Dies tut man nicht, wenn Dateinamen durch einen Platzhalter ersetzt werden:

for /f "skip=3 delims=*" %%g in (*.xml) do (echo %%g >>tempfile.txt) 

Was ist falsch und was soll ich tun, damit es funktioniert? Ich brauche die * .xml-Dateien. Sie befinden sich im selben Ordner wie die Stapeldatei.

Antwort

2

for /f nimmt nur einen Dateinamen. Wenn Sie einen Platzhalter verwenden möchten, müssen Sie die Platzhalter selbst erweitern. Sie können for dazu verwenden, nur nicht in einem Anruf:

for %%f in (*.xml) do (
    for /f "skip=3 delims=*" %%g in (%%f) do (echo %%g >>tempfile.txt) 
) 
+0

@Anon_C Was für eine wunderbare Lösung! Es wirkt wie ein Zauber. Ich danke dir sehr. Wo finde ich eine Dokumentation über dieses obskure Feature? – Karel

+0

Statt 'echo %% g >> tempfile.txt' würde ich' 'tempfile.txt echo %% g' schreiben, um zu vermeiden, dass auch ein nachkommender Leerzeichen zurückgemeldet wird ... – aschipfl