2.9k Aufrufe
Gefragt in Anwendungen(Java,C++...) von
Hallo ich habe einen Batch der Zeilenweise Wörter in einer txt Datei ändert. Problem ist aber, das es bei einer gewissen Göße nicht mehr funktioniert.



SETLOCAL enabledelayedexpansion


SET "quell_datei=quell.txt"
SET "ziel_datei=ziel.txt"
)

SET "suchen_nach=161057"
SET "ersetzen_durch=xxxxxxxx"


REM Quell-Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
SET zeile=%%i& CALL :ersetzen !zeile!
)
GOTO :eof

:ersetzen
REM innerhalb der Variable "zeile"
REM den Inhalt der Variable "suchen_nach" suchen
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen
SET zeile=!zeile:%suchen_nach%=%ersetzen_durch%!

REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben
IF [!zeile!] EQU [] (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
GOTO :eof

:eof


Textdatei: der gesamte Text ist in einer Zeile.

Diese Textdatei funktioniert:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx161057xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx161057xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx161057xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx161057xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Wenn der Text ca. 10 mal so lang ist oder länger geht das nicht mehr mit dem Batch.


Problem ist das die Zeile dann zu lang ist.
Wie komme ich nun um das Problem im Batch herum?

Ich bedanke mich schon mal im voraus, für alle die versuchen mir weiter zu helfen.

7 Antworten

0 Punkte
Beantwortet von
öhm ... wie auch immer:

ich empfehle dir Super SED

https://launchpad.net/ssed

LG
0 Punkte
Beantwortet von
Ja über das SED hatte ich auch schon vor der Erstellung des Batch gelesen. Ich war aber froh, das ich den auch ohne ein extra Programm hin bekommen habe.

Gibt es nicht die Möglichkeit um ein extra Programm herum zu kommen?
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
ich empfehle wie immer JScript in verbindung mit WSH:
www.supportnet.de/faqsthread/2243647
0 Punkte
Beantwortet von
Danke,

d.h. ich den Javascript in eine Datei namens test.js machen und starte die dann? Aber da fragt mich Windows mit welchem Programm ich es öffnen möchte.
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
Das wundert mich ein bischen.
Welche Windows Verison hast Du?

Das Programm, mit der die JS Datei gestartet werden soll, ist
C:/WINDOWS/system32/wscript.exe

( Ich empfehle (wenn Du weisst wie), die Datei standardmässig mit einem Text-Editor zu öffnen.
Dann sollte mit rechtsklick / öffnen die Datei gestartet werden, oder das muss eben auch manuell eingestellt werden. )
0 Punkte
Beantwortet von
Ah jetzt geht es! Die Endung muss dann *.vbs lauten.
Ich habe übrigens Windows 7 Professional.
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
- *.js wenn Du JScript (equivalent JavaScript) verwenden möchtest
- *.vbs wenn Du VBScript (VisualBasicScript) verwenden möchtest

.js geht in Windows 98, XP, 2000, Vista
Windows 7 Professional hab ich noch nicht aus der nähe gesehen.

Bei VBS kann ich weniger gut helfen.
Für ein kurzes Projekt habe ich keine Einwände gegen VBS, aber wenn Du Dich langfristig mit Windows scripting und grösseren Projekten beschäftigen willst,
empfehle ich dringend, JS zu verwenden.

Ich habe jahrelang VBS verwendet, nur weil ich mal damit angefangen hatte, und so viele Codeteile schon fertig hatte.
Und ich habe mich sehr darüber geärgert, weil JS wirklich bequemer und sauberer ist.
Irgendwann habe ich dann mit viel Aufwand alles umgestellt.

Einziger Vorteil, den ich bei VBS sehe ist, daß man in gewissem Rahmen Binärdaten lesen kann. Aber auch nicht wirklich bequem.

In JS kann ich Dir ein loadFile und saveFile senden, wenn Du willst.
...