ztommy
Goto Top

2 feste Wörter in Text-Datei einfügen und Line Feed aus dieser datei entfernen

Morgen face-smile

ich habe 2 kleine Fragen.

1. ich muss per Batch eine Textdatei erstellen aus Daten, die in einem Verzeichnis stehen.
Die Namen, die immer variieren, werden in diese Text-Datei geschrieben. Das klappt soweit.

So, nun müssen aber bei der Verarbeitung bzw. Erstellung der Text-Datei 2 feste Wörter eingefügt werden.
Program und Modul wären die beiden festen Wörter, die als erstes eingetragen werden und dann halt die Namen, die aus dem entsprechend angegebenen Verzeichnis mit eingefügt werden.

2. es muss mit Tabstob getrennt sein bzw. muss ein tabstob dazwischen sein.
Sieht dann aus wie eine zweispaltige Tabelle.
Wichtig, es darf nur am Ende der jeweiligen Zeile ein Carriage Return () stehen.
Ein Line Feed (LF) darf nicht vorhanden sein, da diese Text-Datei weiterverarbeitet werden muss.
Aktuell füge ich die beiden Festen Wörter händisch an den Anfang ein und entferne den Line Feed.

Vorab vielen Dank für Eure Unterstützung.

Leider kenne ich mich im Batch o. Power Shell noch nicht aus. Hab auch etwas Probleme damit.
Es wurde mir schon geholfen mit dem Schritt, die text-datei zu erstellen.
dafür danke.

Nur leider muss ich noch 2 feste Wörter am ANFANG einfügen und nur Carriage Return darf in der Text-Datei sein.

Danke Euch und grüße

Content-ID: 519499

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

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

erikro
erikro 27.11.2019 um 09:01:30 Uhr
Goto Top
Moin,

Zitat von @ZTommy:
1. ich muss per Batch eine Textdatei erstellen aus Daten, die in einem Verzeichnis stehen.
Die Namen, die immer variieren, werden in diese Text-Datei geschrieben. Das klappt soweit.

Wenn es denn schon soweit klappt, dann wäre es äußerst hilfreich, wenn Du uns den Quellcode und auch Beispiele, wo denn die Daten herkommen, zur Verfügung stellst. Dann steigen Deine Chancen ungemein, dass Du Hilfe bekommst. face-wink

Liebe Grüße

Erik
ZTommy
ZTommy 27.11.2019 um 10:02:23 Uhr
Goto Top
Moin,

Du wieder face-smile

Naja, es ist auch mit bzw. ehr dein Verdienst face-wink

Code:

@echo off & setlocal EnableDelayedExpansion
set "folder=C:\Users\Tommy\Desktop\test_copy\"
set "outfile=C:\Users\Tommy\Desktop\test_copy\$export_ErrorCPY.txt"
"%outfile%" (for %%a in ("%folder%\*.cpy") do (set "basename=%%~na" &echo(%%~na !basename:~0,6!%))


Tab konnte ich anpassen und das die Namen in der erstellten TXT nicht das "Name.txt" enthalten, sondern nur "Name".
Aktuell bekomme ich die Ausgabe mit Line Feed (LF) und Carriage Return (der sein darf).
Line Feed (LF) nicht bzgl. Weiterverarbeitung.

Vermutlichmuss ich auch noch eine Schleife mit IF EXIST bauen, da ich mehrere Ordner abfragen muss, ob dateien da sind.
Wenn diese im Ornder "X" sind, dann erstelle die $export_ErrorCPY.txt.

Grüße
ZTommy
ZTommy 27.11.2019 um 11:59:19 Uhr
Goto Top
Edit:
falsche Aussage von mir:
Line Feed (LF) muss behalten werden und Carriage Return (CR) muss entfernt werden.
Hab es leider verdreht ....
erikro
erikro 27.11.2019 um 12:03:26 Uhr
Goto Top
Moin,

Zitat von @ZTommy:

Edit:
falsche Aussage von mir:
Line Feed (LF) muss behalten werden und Carriage Return (CR) muss entfernt werden.
Hab es leider verdreht ....

Ich hatte mich schon gewundert. Ich vermute mal, die Datei wird unter Windows erstellt und unter Linux weiterverarbeitet? Wie wird die Datei übertragen?

Liebe Grüße

Erik
ZTommy
ZTommy 27.11.2019 um 12:14:17 Uhr
Goto Top
Mahlzeit face-smile

Die Datei wird unter Windows (Win-Server 2012R2) erstellt und dort wird Sie auch weiter verarbeitet.
Sie wird nicht übertragen und bleibt in dem zu erstellendem Verzeichnis.

Ein Tool pflegt dann diese erstellte TXT Datei ein.


Grüße Tommy
erikro
erikro 27.11.2019 um 14:44:23 Uhr
Goto Top
Zitat von @ZTommy:
Die Datei wird unter Windows (Win-Server 2012R2) erstellt und dort wird Sie auch weiter verarbeitet.
Sie wird nicht übertragen und bleibt in dem zu erstellendem Verzeichnis.

Und warum dann die Konvertierung des Zeilenendes auf Linux-Style? Naja, warum auch immer. Mit der Powershell:

((Get-Content .\windows.txt) -join "`n") + "`n" | set-content .\linux.txt -NoNewline  

hth

Erik
ZTommy
ZTommy 27.11.2019 um 14:53:25 Uhr
Goto Top
Na weil das Tool nur mit dieser Konvertierung klar kommt.
Daher muss ich das entsprechend anpassen und umwandel per Batch der je nach zeitraum automatisch dur ein Task startet.
Daher z.B. auch Tabstop....

Grüße
erikro
erikro 27.11.2019 um 15:04:35 Uhr
Goto Top
Zitat von @ZTommy:

Na weil das Tool nur mit dieser Konvertierung klar kommt.

Das war eher eine rhetorische Frage, weil das sehr seltsam ist, dass ein Tool unter Windows nicht mit dem Window-Zeilenende zurecht kommt. face-wink

Daher muss ich das entsprechend anpassen und umwandel per Batch der je nach zeitraum automatisch dur ein Task startet.
Daher z.B. auch Tabstop....

Tabstopps sind da eher üblich (neben Semikolon). Geht es denn mit der PS-Zeile? Die kannst Du auch im Batch einbauen, wenn es denn unbedingt ein Batch sein muss. Powershell Befehl in Batch ausführen
ZTommy
ZTommy 27.11.2019 um 15:19:26 Uhr
Goto Top
Das Tool scannt Sourcen, wie z.B. Cobol, Copy usw..
Das ist eine Zusatzdatei von mir, die mit eingepflegt wird.
Aber schon komisch face-big-smile

Danke zwecks Link. Schaue mir das nachher an.

Grüße face-wink
rubberman
Lösung rubberman 27.11.2019 aktualisiert um 19:29:42 Uhr
Goto Top
Ungetestet:
@echo off &setlocal EnableDelayedExpansion
set "folder=C:\Users\Tommy\Desktop\test_copy\"  
set "outfile=C:\Users\Tommy\Desktop\test_copy\$export_ErrorCPY.txt"  

(set lf=^
%= don't change and make sure there are no spaces at the end of these lines =%  
)

<nul >"%outfile%" set /p "=Program	Modul!lf!"  
<nul >>"%outfile%" (for %%a in ("%folder%\*.cpy") do (set "basename=%%~na" &set /p "=%%~nxa	!basename:~0,6!!lf!"))  
Steffen
ZTommy
ZTommy 29.11.2019 um 14:49:18 Uhr
Goto Top
Hallo Steffen,

hat wunderbar geklappt face-smile

Nicht schlecht.

Danke für die Hilfe und Unterstützung.

Grüße face-smile
ZTommy
ZTommy 29.11.2019 um 14:51:47 Uhr
Goto Top
Hallo Erik face-smile

danke für den Tipp face-smile

Wusste ich noch nicht.

Grüße face-smile