ztommy
Goto Top

Inhalt eines Ordners in eine TXT-datei schreiben und den namen um 6 Stellen kürzen

Hallo face-smile

ich bin neu hier und auch nu im folgendem Thema.

Ich muss eine x-beliebige Anzahl von Dateien in eine TXT-Datei schreiben.

Also in eine TXT-Datei müssen die Namen der Dateien (z.B. Jar, COB, JCL usw...) aus einem bestimmten Verzeichnis eingetragen werden.
Die Namen der Dateien in dem Verzeichnis, die in die TXT-Datei eingetragen werden, müssen auf 6 Stellen gekürzt werden.

Beispiel:

Original -> 12345678.cpy
Umbenannt -> 123456.cpy (dieser gekürzte Name soll in der TXT-Datei stehen)

Das soll dann für alle *.cpy in dem Verzeichnis erfolgen.
Es soll nichts gelöscht werden im Verzeichnis und wenn eine Datei z.B.: nur 5 Stellen (als) name hat, soll diese 5 stellenen nur eingetragen werden (Bsp.: 12345.cpy)

Leider hatte ich noch nicht mit Batch zu tun.
Wenn jemand eine Idee für Powershell hat, bin ich auch froh bzw. ist das ok.

Aber ich würde mich sehr freuen wenn ich hilfe bekommen könnte.
Leider, wie schon erwähnt, habe ich bis jetzt noch nichts mit Programierung o. Skripten zu tun.

Habe lange im Netzt nach einer Lösung gesucht, aber nichts gefunden...

Danke Euch face-smile

Content-ID: 512730

Url: https://administrator.de/contentid/512730

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

erikro
erikro 07.11.2019 um 12:28:25 Uhr
Goto Top
Moin,

Zitat von @ZTommy:
Die Namen der Dateien in dem Verzeichnis, die in die TXT-Datei eingetragen werden, müssen auf 6 Stellen gekürzt werden.

Und was soll passieren, wenn dadurch Dubletten entstehen? Beispiel:

12345678.cpy -> 123456.cpy
12345699.cpy -> 123456.cpy

Liebe Grüße

Erik
ZTommy
ZTommy 07.11.2019 um 13:48:19 Uhr
Goto Top
Hallöchen und DANKE Erikro für deine Rückmeldung face-smile

ich habe es etwas doof erklärt face-sad

mal ein paar Eckdaten:

1. das Verzeichnis bleibt dasselbe
2. die Anzahl an Dateien sind mitunter unterschiedlich
3. es sind aber immer dieselben Endungen -> *.cpy , das ändert sich nicht
4. es gibt kein Unterverzeichnis

Nun, wie es aussehen muss im TXT-File:

Beispiel:

Im Verzeichnis liegen folgende Dateien:

XY01SA01.cpy
XY01SC00.cpy
XY06SA01.cpy
XY10AB00.cpy
XY10AB01.cpy usw...

Im Textfile, wo alles zusammen eingepflegt wird, muss es dann so aussehen:

XY01SA01.cpy XY01SA.cpy
XY01SC00.cpy XY01SC.cpy
XY06SA01.cpy XY06SA.cpy
XY10AB00.cpy XY10AB.cpy
XY10AB01.cpy XY10AB.cpy

Zwischen den beiden Namen muss ein Tabstop sein.
Es darf kein Leerzeichen oder Symikolon o. anderes wie Komma stehen.

Beispiel:

XY10AB00.cpyTabstopXY10AB.cpy
XY10AB01.cpyTabstopXY10AB.cpy

Der Grund ist, das diese TXT-Datei weiter verarbeitet werden muss.
In der "ersten" Spalte werden keine Dubletten sein. Die Namen sind immer nur einmal vorhanden.
Die Namen nach dem Tabstop werden zwangsläufig eine Dupli sein, was aber nicht schlimm ist.
Dies soll so sein.

Ich danke Dir bzw. Euch face-smile
colinardo
Lösung colinardo 08.11.2019 aktualisiert um 11:55:07 Uhr
Goto Top
Servus @ZTommy ,
Leider hatte ich noch nicht mit Batch zu tun.
Wenn jemand eine Idee für Powershell hat, bin ich auch froh bzw. ist das ok.
Na dann hast du jetzt die Qual der Wahl:
back-to-topBatch
@echo off & setlocal EnableDelayedExpansion
set "folder=D:\Daten"  
set "outfile=D:\Daten\ergebnis.txt"  
>"%outfile%" (for %%a in ("%folder%\*.cpy") do (set "basename=%%~na" &echo(%%~nxa	!basename:~0,6!%%~xa))  
back-to-topPowershell
$ordner = 'D:\Daten'  
$ausgabe = 'D:\Daten\ergebnis.txt'  
Get-ChildItem $ordner -Filter *.cpy -File | %{"$($_.Name)`t$($_.BaseName[0..5] -join '')$($_.Extension)"} | Set-Content $ausgabe  
Grüße Uwe
ZTommy
ZTommy 08.11.2019 um 12:51:37 Uhr
Goto Top
Servus Colinardo face-smile

ich Danke Dir recht herzlich face-smile

Ich teste das heute noch im laufe des Tages bzw. am WE.

Sobald ich das getestet habe, gebe ich Dir Feedback face-smile

Herzlichen Dank
ZTommy
ZTommy 08.11.2019 um 15:38:36 Uhr
Goto Top
Hallo Uwe face-smile

habs getestet.

Läuft beides geschmeidig durch face-big-smile

Merci und wünsche ein schönes Wochenende face-big-smile

Hab Dank.