mit batch in txt datei an bestimmter stelle werte einfügen
Hallo zusammen
ich bin leider noch ein kleiner newbie was programmiersprachen angeht, und hoffe dass mir einer hier helfen kann.
Ich habe ein txt file die mit einer willkührlichen zahlenfolge über mehrere zeilen gefüllt ist.
ich möchte jetzt an z.b. immer nach 8 stellen 00 einfügen. Ist das über ne Batch oder VB realisierbar? Kann mir jemand
nen kleinen Tipp geben wie ich dies am besten realisieren kann?
Im vorraus schonmal vielen Dank
ich bin leider noch ein kleiner newbie was programmiersprachen angeht, und hoffe dass mir einer hier helfen kann.
Ich habe ein txt file die mit einer willkührlichen zahlenfolge über mehrere zeilen gefüllt ist.
ich möchte jetzt an z.b. immer nach 8 stellen 00 einfügen. Ist das über ne Batch oder VB realisierbar? Kann mir jemand
nen kleinen Tipp geben wie ich dies am besten realisieren kann?
Im vorraus schonmal vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 99403
Url: https://administrator.de/contentid/99403
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Wurzelschnurz!
Als Batch etwa so:
Es wird eine Sicherung (durch Anfügen von %Bak% - im Beispiel oben ".bak" - an den Dateinamen) erstellt.
Noch eine Anmerkung: Da Du nur von Ziffern in der Datei gesprochen hast, bin ich davon ausgegangen, dass kein "!" darin vorkommt (dieses wäre nämlich in der aktuellen Version im Ergebnis nicht mehr vorhanden).
Grüße
bastla
Als Batch etwa so:
@echo off & setlocal enabledelayedexpansion
set "File=D:\Datei mit vielen Ziffern.txt"
set "bak=.bak"
set "Ins=00"
set /a Step=8
move "%File%" "%File%%bak%"
set /a Nr=1
set New=
for /f "usebackq delims=" %%i in ("%File%%bak%") do set "Line=%%i" & call :ProcessLine
if "%New%" neq "" >>"%File%" echo %New%
goto :eof
:ProcessLine
set Pos=0
:GetChar
set Char=!Line:~%Pos%,1!
if "%Char%"=="" goto :EndOfLine
set New=%New%%Char%
set /a Check=%Nr%%%%Step%
if %Check%==0 set New=%New%%Ins%
set /a Nr+=1
set /a Pos+=1
goto :GetChar
:EndOfLine
if "%New%" neq "" >>"%File%" echo %New%
set New=
goto :eof
Noch eine Anmerkung: Da Du nur von Ziffern in der Datei gesprochen hast, bin ich davon ausgegangen, dass kein "!" darin vorkommt (dieses wäre nämlich in der aktuellen Version im Ergebnis nicht mehr vorhanden).
Grüße
bastla
Hallo Wurzelschnurz!
Aufgrund Deiner Testdatei wäre "keine Zeilenumbrüche" auf "keine Windows- (mit CRLF), sondern Unix/Linux- (nur LF) Zeilenumbrüche" zu korrigieren ...
Spätestens damit ist es Zeit, zum besser geeigneten VBScript (allerdings im Rahmen eines Batches eingesetzt) zu greifen:
Auch hier wird eine Sicherungskopie (mit angefügtem ".bak") erstellt (Zeile 13).
Grüße
bastla
Aufgrund Deiner Testdatei wäre "keine Zeilenumbrüche" auf "keine Windows- (mit CRLF), sondern Unix/Linux- (nur LF) Zeilenumbrüche" zu korrigieren ...
Spätestens damit ist es Zeit, zum besser geeigneten VBScript (allerdings im Rahmen eines Batches eingesetzt) zu greifen:
@echo off & setlocal
set "File=C:\Test.txt"
set "bak=.bak"
set "Ins=00"
set S=%temp%\IZ.vbs
> %S% echo Set fso=CreateObject("Scripting.FileSystemObject")
>>%S% echo F=WScript.Arguments(0)
>>%S% echo T=Split(fso.OpenTextFile(F).ReadAll,vbLF)
>>%S% echo For i=0 To UBound(T)-1:T(i)="%Ins%"^&T(i):Next
>>%S% echo fso.CreateTextFile(F,True).Write Join(T,vbLF)
copy "%File%" "%File%%bak%">nul
cscript //nologo %S% "%File%"
Grüße
bastla