shihayazad
Goto Top

txt per batch umbennen und hochzählen

Hallo zusammen,

leider habe ich mich beim suchen entweder zu doof angestellt oder aber wirklich nichts gefunden, was genau mein Problem beschreibt.

Ich erzeuge per SQL Export aus SAP eine "Stock.txt" die ich in ein Fremdsystem liefern muss, hier läuft ein Autoimporter der erwartet, das die Datei immer "BU123456.txt" heißt, die Zahlen sind hierbei als Platzhalter gedacht, es gibt einen Startwert und mit jedem ausführen der Batch Datei müsste die Zahl um 1 erhöht werden.

1. Run: BU000000
2. Run: BU000001
3. Run: BU000002

natürlich weiß ich wie ich einen normalen rename in die Batch Datei einbaue aber ich finde keine Lösung für das automatische Hochzählen, falls es sowas überhaupt gibt. Ich kann auch ein Powershell Script etc. zusätzlich einbauen aber auch hier habe ich bisher keine Lösung gefunden. Ich kann auch "BUHHMMSS.txt" (HH = Stunden, MM = Minuten, SS = Sekunden) nehmen, wenn oder "BUMMTTHH.txt" (MM = Monat, TT = Tag, HH = Stunde)

Der Kunde der auf diese Weise mit Bestand versorgt wird, hat zwar eine eigene IT Abteilung aber anscheinend hat sich da noch nie jemand gedanken gemacht, wie man das automatisiert mehrfach am Tag laufen lassen kann. Wieso auch immer scheint es dort der Fall zu sein, das die Dateien bei anderen Lieferanten händisch angepasst werden.

Göttlich wäre es dann noch, wenn die Batch prüfen könnte ob es innerhalb der "Stock.txt" leere Zeilen gibt und diese beim Umbenennen raus löscht.

Vielen Dank für eure Hilfe und nochmal sorry für die doofe Frage

Grüße

Eric

Content-Key: 393386

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

Printed on: April 25, 2024 at 15:04 o'clock

Member: Kraemer
Kraemer Nov 20, 2018 at 16:18:41 (UTC)
Goto Top
Mitglied: 137846
137846 Nov 20, 2018, updated at Nov 21, 2018 at 07:59:25 (UTC)
Goto Top
@echo off &setlocal ENABLEDELAYEDEXPANSION
set "quelle=D:\Ordner"  
If not exist "%quelle%\cnt.txt" (  
    set cnt=1
) else (
    set /p cnt=<"%quelle%\cnt.txt"  
    set /a cnt+=1
)

if exist "%quelle%\stock.txt" (   
     set "new=00000!cnt!"  
     ren "%quelle%\stock.txt" "BU!new:~-6!.txt"  
     >"%quelle%\cnt.txt" echo.!cnt!  
)
Gruß A.
Member: Kraemer
Kraemer Nov 20, 2018 at 18:18:57 (UTC)
Goto Top
erzeuge per SQL Export aus SAP eine "Stock.txt"
Mitglied: 77559
77559 Nov 21, 2018 at 00:00:56 (UTC)
Goto Top
Ich würde ja eine if Abfrage

if exist "%quelle%\stock.txt" (  
    set "new=00000!cnt!"   
    ren "%quelle%\stock.txt" "BU%new:~-6%.txt"   
    >"%quelle%\cnt.txt" echo.!cnt!  
)

einfügen.

Gruß
LotPings
Member: Shihayazad
Shihayazad Nov 21, 2018 at 07:03:25 (UTC)
Goto Top
Hallo,

ich sollte vieleicht noch dazu sagen, das die Datei verschoben wird also er nicht prüfen kann ob dort eine Datei liegt. Ich werde jetzt einmal die Lösungen ausprobieren die hier genannt wurden und mich dann melden.

Gruß Eric
Mitglied: 137846
137846 Nov 21, 2018 updated at 08:08:19 (UTC)
Goto Top
Zitat von @Shihayazad:

Hallo,

ich sollte vieleicht noch dazu sagen, das die Datei verschoben wird also er nicht prüfen kann ob dort eine Datei liegt.
Das hat dir LotPings doch noch zusätzlich zum obigen Code gezeigt (obwohl sein Code einen kleinen Fehler hatte (habe ich oben korrigiert eingebaut)). Ich dachte solch Basis-Batch Dinge wären zumindest vorhanden, deshalb hatte ich sie nicht eingebaut damit du auch noch was zu tun hast und nicht nur CopynPastest face-wink?
Member: Shihayazad
Shihayazad Nov 21, 2018 at 08:57:21 (UTC)
Goto Top
Hi Answer,

hatte ich beim überfliegen falsch gelesen, sorry dafür. Ich hoffe das ich gleich die Zeit haben werde mir das ganze zusammen zu bauen, damit es dann so läuft wie ich es mir vorstelle. Entsprechend werde ich dann nochmal das ganze Batch posten, das dann für mich funktioniert face-smile
Member: Kraemer
Kraemer Nov 21, 2018 at 09:02:26 (UTC)
Goto Top
Zitat von @Shihayazad:

Hi Answer,

hatte ich beim überfliegen falsch gelesen, sorry dafür.
so leid kann es dir nicht tun, da du immer noch nicht alles liest und verstehst

Ich hoffe das ich gleich die Zeit haben werde mir das ganze zusammen zu bauen,
@137846 hat dir die fertige Lösung geliefert!

damit es dann so läuft wie ich es mir vorstelle.
und das Ganze entsprechend deiner Vorgaben

Entsprechend werde ich dann nochmal das ganze Batch posten, das dann für mich funktioniert face-smile
du scheinst den Code nicht einmal annähernd zu verstehen...
Member: Shihayazad
Shihayazad Nov 21, 2018 at 12:23:57 (UTC)
Goto Top
findstr ^.$ Stock.txt>stock1.txt 
@echo off &setlocal ENABLEDELAYEDEXPANSION
set "quelle=C:\Quelleordner\"  
If not exist "%quelle%\cnt.txt" (  
    set cnt=1
) else (
    set /p cnt=<"%quelle%\cnt.txt"  
    set /a cnt+=1
)

if exist "%quelle%\stock1.txt" (   
     set "new=00000!cnt!"  
     ren "%quelle%\stock1.txt" "BU!new:~-6!.txt"  
     >"%quelle%\cnt.txt" echo.!cnt!  
)
move "C:\Quellordner\BU*.txt" "C:\Zielordner\"  
del "C:\Quellordner\Stock.txt"  

Die erste Zeile löscht zusätzlich, zu dem was @137846 bereitgestellt hat, leere Zeilen aus der Datei, bevor der rename Prozess einsetzt. Darunter verschiebe ich die Datei in den finalen Zielordner und lösche die ursprüngliche Quelldatei (Stock.txt) da diese die überflüssigen Zeichen noch enthält und auch nach dem Konvertieren nicht mehr benötigt wird.

@Kraemer Danke für Deine Kritik, ich werde mich in Zukunft bemühen meine Antworten und Fragen deutlicher zu formulieren, damit es nicht mehr zu den von Dir "unterstellten" (sorry mir fällt kein besseres Wort ein) Missverständnissen kommt. Danke auch für Deinen Beitrag mit dem Link, leider hat mir dieser nicht weiter helfen können. Die "Stock.txt" wird natürlich nicht per SQL aus SAP erzeugt sondern ebenfalls per Batch, die ein SQL Script anstößt und das Ergebnis dann in die TXT einträgt.

@77559 Danke für die Optimierung des Codes!

Vielen Dank allen für Ihre Hilfe!

Grüße

Eric