Batch Speziellen Teil von Dateinamen in .txt Datei

trainee2

Newbie
Registriert
Okt. 2019
Beiträge
3
Guten Tag Computer Base,

ich brauche eine Batch Datei, die mir einen bestimmten Teil von rund 25000 dateien in einem Ordner in eine .txt oder sogar noch besser in eine .xls Datei Schreibt.

Konkret haben diese Dateien die Formatierung "Firma_A00001_XXXXXXXXX.zip".
Die .txt / .xls soll nur die A Nummern der Dateien in einem bestimmten Ordner enthalten, also nur eine A nummer pro zeile.

Also:
A00035
A00123
A01467
usw.

mit dem dir Befehl alleine komme ich leider nicht weiter.
Mein bisheriger Code:

Code:
dir /b /a-d "U:\User\BatchZipper\*.zip">"U:\User\BatchZipper\Nummern.txt

Dieser gibt mir den gesammten Namen der Dateien aus, mit der .zip Endung, ich brauche aber nur die "A00001" Nummern. Sie steht immer an der selben stelle, nur was danach kommt ist variabel. Ich habe das internet und das CB Forum jetzt schon nach bestem gewissen durchsucht, allerdings zu meinem Problem keine wirkliche Lösung gefunden. Ich bin absoluter Anfänger was batch Dateien angeht, daher sorry für die wahrscheinlich triviale Frage.

Grüße, Trainee
 
Zuletzt bearbeitet:
Option Explicit


Sub Teile_eines_Dateinamen()
Dim Verzeichnis As String
Dim Inhalt As String
Dim Wo1 As Long
Dim Wo2 As Long
Dim Ergebnis As String
Dim Zeile As Long

Verzeichnis = "E:\"
Inhalt = Dir(Verzeichnis & "\*.zip", vbNormal)
Zeile = 0


nochmal:

If (Inhalt <> "") Then

Wo1 = InStr(1, Inhalt, "_")
If (Wo1 > 0) Then
Wo2 = InStr(Wo1 + 1, Inhalt, "_")
If (Wo2 > 0) Then
Ergebnis = Trim(Mid(Inhalt, Wo1 + 1, (Wo2 - Wo1) - 1))
If (Ergebnis <> "") Then
Zeile = Zeile + 1
Worksheets("Tabelle1").Cells(Zeile, 1).Value = Ergebnis
End If

Inhalt = Dir()
GoTo nochmal
End If
End If

End If

End Sub
Ergänzung ()

1. Kopiere das in deiner Excelmappe im VBA-Editor
2, Erstelle eine Taste auf Deiner Tabelle (Tabelle1) und verknüpfe diese Taste mit dieser Sub
Dann hast Du diese Teile vom Dateinamen gleich in deiner Exceltabelle
Ergänzung ()

Du musst noch das Verzeichnis im Code abändern. Ich habe zum Testen bei mir das Laufwerk E:\ genommen
 
Hi,

schonmal danke für die grandios schnellen Antworten.

Ich habe den zweiten Code von gaym0re jetzt mal direkt kopiert, allerdings wird keine Datei erstellt. Die CMD blinkt kurz auf aber nichts passiert, selbst bei einem "pause" Befehl nach der for Schleife. Gibt es irgendwas was ich bei der Batch oder beim Ausführen beachten muss ? Nach lesen der for doku erschließt es sich mir jetzt nicht wirklich warum es nicht funktionieren sollte aber es scheint als ob die for schleife einfach übergangen wird.


Grüße, Trainee
 
Was passiert denn wenn du nur den ersten Befehl absetzt, also ohne es direkt in eine Datei schreiben zu lassen? Sieht die Ausgabe an sich sauber aus?
 
Selbes Spiel, die CMD blitzt für eine Millisekunde auf mit dem text.

Code:
"\Trainee\BatchZipper"') do @echo i" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
:confused_alt:

Die Dateipfade sind alle korrekt, am Netzlaufwerk hängts auch nicht, ich habe das ganze auch schon lokal auf c ausgeführt, ohne leerzeichen, als admin ausgeführt und und und.
Ergänzung ()

Wer googlen kann hat viel gekonnt. Es lag an dem einzelnen "%". Bei batch müssens 2 "%" sein also

Code:
for /f "tokens=2 delims=_" %%i in ('dir /b /a-d "U:\User\BatchZipper"') do @echo %%i>>datei.txt

Alles klar jetzt läuft alles wie es soll, vielen Dank für die Hilfe :):):) !!!!
 
Zuletzt bearbeitet:
Zurück
Oben