deny1988
Goto Top

Bitte um hilfe für eine Batch zum Auffüllen um führende Nullen

Hallo Zusammen,

Ich bräuchte mal bitte hilfe, ich baue grade eine Batch zusammen..
Diese gibt mir eine bis zu 5 stellige Zahl aus und soll dann um entsprechend viele Nullen erweitert werden damit sie 6 Stellig wird.
Also beispiel:
Ich bekomme eine 23 raus aus der dann 000023 werden soll, das ganze dann abgespeichert in einer Textdatei.

Schonmal vielen Dank für die mühe !

Content-ID: 2046168271

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

Ausgedruckt am: 22.11.2024 um 08:11 Uhr

runthegaunz
runthegaunz 03.03.2022 um 06:58:03 Uhr
Goto Top
Das was du suchst, nennt sich "Number padding":

https://google.com/search?q=batch+number+padding
1915348599
Lösung 1915348599 03.03.2022 aktualisiert um 07:21:00 Uhr
Goto Top
@echo off
set num=23
set num=00000%num%
set num=%num:~-6%
>"Datei.txt" echo %num%  
Deny1988
Deny1988 03.03.2022 um 09:16:20 Uhr
Goto Top
Hallo Ihr 2, Danke runthegaunz, ich habs damit gestern schon versucht und hatte verschiedene Ergebnisse die nicht zur Lösung geführt haben. Vielleicht auch ein Layer8 Problem :oP

Pretty,
Danke das funktioniert Super, nur ! Was ist wenn statt der 23 ne 50 da steht?
Habe ich die Möglichkeit die 1. Zeile in meiner Txt datei einlesen zu lassen und dann eben die Nullen vorne ranstellen zu lassen?
Denn ich habe über 90 Tausend dieser Dateien?

Vielen Dank euch schonmal ! :o )
1915348599
Lösung 1915348599 03.03.2022 aktualisiert um 09:38:26 Uhr
Goto Top
Zitat von @Deny1988:
Danke das funktioniert Super, nur ! Was ist wenn statt der 23 ne 50 da steht?
Ist egal funktioniert genauso, genauso wie mit allen anderen ... Mach dir doch einfach mal klar wie das ganze funktioniert. Es werden genügend Nullen als Puffer vorangestellt, dann werden anschließend immer 6 Ziffern von hinten bzw. rechts von diesem String extrahiert ... ergo führt dazu das du immer eine 6 stellige Ziffernfolge mit führenden Nullen bekommst
Habe ich die Möglichkeit die 1. Zeile in meiner Txt datei einlesen zu lassen und dann eben die Nullen vorne ranstellen zu lassen?
Klar set /p ist dein Freund
Denn ich habe über 90 Tausend dieser Dateien?
Dann nimmst du halt nen for Loop.

@echo off &setlocal enabledelayedexpansion
>"Ergebnis.txt" (for %%a in ("D:\Ordner\*.txt") do (  
    set /p num=<"%%a"  
    set num=00000!num!
    set num=!num:~-6!
    echo !num!
))

Oder du nimmst heutzutage gleich nen Powershell Einzeiler für so ne Pippifax-Aufgabe ...
Get-ChildItem "D:\Ordner" -File -Filter *.txt | %{(Get-Content $_.Fullname -Head 1).padLeft(6,"0")} | Set-Content .\ergebnis.txt  

Fertsch Affe tot.
Deny1988
Deny1988 03.03.2022 aktualisiert um 09:43:08 Uhr
Goto Top
Hey Pretty,
Es ist mir klar das solange nullen vorne rangestellt werden, bis die Zahl die gewünschte Länge hat face-smile
Set /p war mein Problem, bzw den Parameter habe ich nicht gesehen und/oder überlesen.
Allerdings war mein Frustlevel dann auch bei 200 ! :P

Vielen Dank !

Ja in Powershell habe ich es auch hinbekommen, Powershell geht nur leider nicht da, das Programm das die Batch auslösen soll nur Batches ansprechen kann.

Nochmal Danke ! face-smile
1915348599
Lösung 1915348599 03.03.2022 aktualisiert um 09:49:10 Uhr
Goto Top
Zitat von @Deny1988:

Powershell geht nur leider nicht da, das Programm das die Batch auslösen soll nur Batches ansprechen kann.
Klar geht das, einfach die PS in die Batch pressen, fertsch face-wink.
@echo off
powershell -EP Bypass -C "Get-ChildItem ......................"  

Dann bitte noch den Thread schließen, nicht vergessen!