Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Frank am 15.11.2013 um 16:55:06 Uhr
Den Quellcode ein wenig formatiert.
GELÖST

Batch Zeilen in einen Textdatei austauschen ???... Script stürzt manchmal ab.

Frage Entwicklung Batch & Shell

Mitglied: Viper-Berlin

Viper-Berlin (Level 1) - Jetzt verbinden

14.11.2013, aktualisiert 15.11.2013, 1751 Aufrufe, 6 Kommentare

Servus Leute,

mein Skript geht nicht richtig ;-(

Mein Script soll Zeilen tauschen wenn ein Suchstring in der Zeile gefunden wird !,
es funktioniert auch soweit bis ich in der Textdatei Zeichen wie diese drin habe: %&/()=?'*"§$%&/ usw.
auch Zeilen wo nur Blanks drin sind, bringen das Script zum absturz ???

wer kann mir helfen

DANKE...
Vipy

01.
:: SCRIPT BY: VIPY (Nov 2013) ------------------------------ 
02.
:: SCRIPT ERSETZT ZEILEN WENN DER SUCHSTRING IN ZEILE GEFUNDEN WURDE!  SUCHE ZEILEN MIT SUCHSTRING "SeachStr" 
03.
:: IN DATEI "QuellDatei"  UND ERSETZT DIE KOMPLETTE ZEILE MIT "ReplaceStr" SCHREIBT DABEI EINEN NEUE DATEI "ZielDatei" 
04.
:: DIESES SCRIPT SCHREIBT AUCH LEERZEILEN MIT IN DIE NEUE DATEI UND JETZT DAS..... 
05.
:: 
06.
:: PROBLEM: 
07.
:: WENN ()!"§$%&/()=? IN DER DATEI STEHT !,UND ODER EINE ZEILE MIT BLANKS AUFTAUCHT 
08.
:: STÜRZT DAS SCRIPT AB, WARUM ?? ICH MÖCHTE NUR DIE ZEILEN ERSETZEN WO DER SUCHSTRING  
09.
:: AUFTAUCHT UND ANSONSTEN DIE DATEI ORIGINAL LASSEN BEI DIESEN CMD MISST KLAPPT NIX!!! 
10.
:: WER KANN HELFEN BESTEN DANK... 
11.
 
12.
::------------------------------------------------------------------ 
13.
@ECHO off 
14.
CLS 
15.
 
16.
:ProMain 
17.
     SET "QuellDatei=c:\test\test.txt" 
18.
     SET "ZielDatei=c:\test\test2.txt" 
19.
     SET "SeachStr=NSA CIA" 
20.
     SET "ReplaceStr=DIESE ZEILE WURDE ERSTEZT !" 
21.
     ::--- WENN QUELLDATEI EXISTIERT LÖSCHE DIESE --- 
22.
     IF EXIST  "%QuellDatei%" ( 
23.
         DEL /F "%QuellDatei%" 
24.
25.
     ::--- WENN ZIELDATEI EXISTIERT LÖSCHE DIESE --- 
26.
     IF EXIST  "%ZielDatei%" ( 
27.
         DEL /f "%ZielDatei%" 
28.
29.
     ::--- LEGE VERZEICHNIS C:\TEST\ AN WENNN NCHT VORHANDEN --- 
30.
     IF NOT EXIST "c:\test\" ( 
31.
                       MD "c:\test\" 
32.
33.
     ::--- EINGABE SUCHESTRING --- 
34.
     SET /p "SeachStr=Eingabe Suchstring:" 
35.
     CLS 
36.
     ::--- ERZEUGE DATEI %QuellDatei% --- 
37.
     ECHO  Text der gefunden werden muss sgNSA CIAblabal    >"%QuellDatei%" 
38.
     ECHO  Wissenschaft ist die Erweiterung des Wissens         >>"%QuellDatei%" 
39.
     ECHO  NSA CIA das muss gefunden werden                       >>"%QuellDatei%" 
40.
     ECHO  DIE NÄCHSTE ZEILE IST LEER                              >>"%QuellDatei%" 
41.
     ECHO.>>%QuellDatei% 
42.
     ECHO  DIE NÄCHSTEN 2 ZEILEN SIND LEER                   >>"%QuellDatei%" 
43.
     ECHO.>>%QuellDatei% 
44.
     ECHO.>>%QuellDatei% 
45.
     ECHO  weitere Zeile                 .                                            >>"%QuellDatei%" 
46.
     ECHO  TEST=das ist nur ein Testtext                                   >>"%QuellDatei%" 
47.
     ECHO  Test diese Zeile darf nicht gefunden werden NSA    >>"%QuellDatei%" 
48.
     ECHO __ZEIGE DATEI AN #VORHER#________________________ 
49.
     ECHO. 
50.
     TYPE "%QuellDatei%" 
51.
     ECHO. 
52.
     ECHO _________________________________________________ 
53.
     ::--- IF EINGABE Q oder q EXIT SCRIPT ---+ 
54.
     IF  /I "%SeachStr%"=="q" GOTO BYE 
55.
     FOR /f "delims=" %%i IN ('FINDSTR /N $ "%QuellDatei%"') DO ( 
56.
         SET "zeile=%%i" 
57.
         CALL :ProReplaceLine 
58.
59.
     ECHO __ZEIGE DATEI AN #NACHHER#_______________________ 
60.
     ECHO. 
61.
     TYPE "%ZielDatei%" 
62.
     ECHO.     
63.
     ECHO _________________________________________________ 
64.
GOTO ProMain 
65.
 
66.
:ProReplaceLine 
67.
   ::--- STRING GEFUNDEN JA NEIN J/N --- 
68.
   ECHO %zeile%|find /i "%SeachStr%" >NUL && SET "gefunden=J" 
69.
   ECHO %zeile%|find /i "%SeachStr%" >NUL || SET "gefunden=N" 
70.
   ::--- DIE NUMMER ABSCHNEIDEN, MUSS LEIDER VORHER GENERIERT WERDEN  
71.
   ::    SONST WERDEN KEINE LEERZEILEN IN DATEI GESCHRIEBEN --- 
72.
   SET "zeile=%zeile:~3%" 
73.
   IF   "%zeile%" EQU "" ( 
74.
        ::--- SCHREIBE LEERZEILE IN DATEI --- 
75.
        ECHO.>>"%ZielDatei%" 
76.
        ) ELSE ( 
77.
            IF /I "%gefunden%"=="J" ( 
78.
               ::--- ERSETZE ZEILE IN DATEI --- 
79.
               ECHO %ReplaceStr%>>"%ZielDatei%" 
80.
               ) ELSE ( 
81.
                   ::--- SCHREIBE ORIGINALZEILE IN DATEI --- 
82.
                   ECHO %zeile%>>"%ZielDatei%" 
83.
84.
85.
GOTO :EOF 
86.
 
87.
::--- END OF LINE....... --- 
88.
:BYE

Z W I S C H E N L Ö S U N G

Habe jetzt einen Zwischenlösung die halbwegs funktioniert....
aber bei zeichen wie !"§$%&/()=?`*'+#ß`*#+`ß0 in Datei hängt sich das Script auf
es liegt an der

Zeile: FOR /f "delims=" %%i IN ('FINDSTR /N $ "%QuellDatei%"') DO ABSTURTZ BEI ZEICHEN WIE !"§$%&/()=??'*`?= usw.

Zeile: FOR /f "delims=" %%i IN ('FINDSTR . "%QuellDatei%"') DO übergibt KEINE LEERZEILEN

FRAGE: was ist da Falsch ???


DANKE FÜR EURE HILFE....

01.
REM ------------------------------------------------------------------ 
02.
@ECHO off 
03.
CLS 
04.
CHCP  850                     & REM  *** CODEPAGE AUF 850 SETZEN  *** 
05.
REM -GLOBALVARIABLEN-------------------------------------------------- 
06.
SET "QuellDatei=c:\test\test3.txt" 
07.
SET "ZielDatei=c:\test\test4.txt" 
08.
SET "SeachStr=Suchtext" 
09.
SET "ReplaceStr=#ZEILENTEXT DER ERSETZ WURDE VAR: ReplaceSt#" 
10.
 
11.
:ProMain 
12.
     SET /A "NrCount=0" 
13.
     IF NOT EXIST "c:\test\" ( 
14.
               MD "c:\test\" 
15.
16.
     REM --- 0 BYTE DATEI ANLEGEN UND ÜBERSCHREIBEN --- 
17.
     TYPE NUL >c:\test\test4.txt 
18.
     REM --- EINGABE SUCHESTRING --- 
19.
     SET /p "SeachStr=Eingabe Suchstring:" 
20.
     REM --- IF EINGABE Q oder q EXIT SCRIPT --- 
21.
     IF  /I "%SeachStr%"=="q" GOTO BYE 
22.
     CLS 
23.
     ECHO __#VORHER#_ZEIGE_DATEI_AN_________________________ 
24.
     TYPE "%QuellDatei%" 
25.
     ECHO __________________________________________________ 
26.
     REM ---QUELL-DATEI ZEILENWEISE AUSLESEN UND IN VARIABLE "zeile" SCHREIBEN --- 
27.
     FOR /f  "delims=" %%i IN ('FINDSTR /N $ "%QuellDatei%"') DO ( 
28.
         SET "zeile=%%i" 
29.
         SET /A "NrCount=NrCount+1" 
30.
         CALL :ProReplaceLine 
31.
32.
     ECHO __#NACHER#_ZEIGE_DATEI_AN_________________________ 
33.
     TYPE "%ZielDatei%" 
34.
     ECHO __________________________________________________ 
35.
GOTO ProMain 
36.
 
37.
REM --- ERSTEZEN ------------- 
38.
:ProReplaceLine 
39.
    CALL :ProNrCut                & REM ---NUMMERN WIEDER ABSCHNEIDEN                    --- 
40.
    CALL :ProCheckgefunden        & REM ---PRÜFEN OBB STRING IN ZEILE GEFUNDEN WURDE J/N --- 
41.
    CALL :ProReplaceGo            & REM --- DATEI WIEDER ZUSAMMENBAUEN                   --- 
42.
GOTO :EOF 
43.
 
44.
REM ---NUMMERN WIEDER ABSCHNEIDEN --- 
45.
:ProNrCut 
46.
    IF  %NrCount% LSS 10 (         
47.
        SET "zeile=%zeile:~2%"        & REM --- 0-9     ÜBERPRÜFEN NUMMERRIERUNG WIEDER RAUS --- 
48.
49.
    IF  %NrCount% GEQ 10 (         
50.
        IF %NrCount% LEQ 99 (         
51.
           SET "zeile=%zeile:~3%"     & REM --- 10-99   ÜBERPRÜFEN NUMMERRIERUNG WIEDER RAUS --- 
52.
53.
54.
    IF  %NrCount% GEQ 100 (       
55.
        IF %NrCount% LEQ 999 (           
56.
           SET "zeile=%zeile:~4%"     & REM --- 100-999 ÜBERPRÜFEN NUMMERRIERUNG WIEDER RAUS --- 
57.
58.
59.
    IF  %NrCount% GEQ 1000 (        
60.
        IF %NrCount% LEQ 9999 (            
61.
           SET "zeile=%zeile:~5%"     & REM --- 100-999 ÜBERPRÜFEN NUMMERRIERUNG WIEDER RAUS --- 
62.
63.
64.
GOTO :EOF 
65.
 
66.
REM ---PRÜFEN OBB STRING IN ZEILE GEFUNDEN WURDE J/N --- 
67.
:ProCheckgefunden 
68.
REM --- STRING GEFUNDEN JA NEIN J/N --- 
69.
    ECHO %zeile%|find /i "%SeachStr%" >NUL && ( 
70.
         SET "gefunden=J" 
71.
         ) || ( 
72.
            SET "gefunden=N" 
73.
74.
GOTO :EOF 
75.
 
76.
REM  --- DATEI WIEDER ZUSAMMENBAUEN --- 
77.
:ProReplaceGo 
78.
     IF "%zeile%"=="" ( 
79.
     REM --- SCHREIBE LEERZEILE IN DATEI --- 
80.
     ECHO.>>"%ZielDatei%" 
81.
     ) ELSE ( 
82.
         IF /I "%gefunden%"=="J" ( 
83.
            REM --- ERSETZE ZEILE IN DATEI --- 
84.
            ECHO %ReplaceStr%>>"%ZielDatei%" 
85.
            ) ELSE ( 
86.
                REM --- SCHREIBE ORIGINALZEILE IN DATEI --- 
87.
                ECHO %zeile%>>"%ZielDatei%" 
88.
89.
90.
GOTO :EOF 
91.
 
92.
REM --- END OF LINE....... --- 
93.
:BYE
Mitglied: bastla
14.11.2013 um 18:24 Uhr
Hallo Viper-Berlin!

Wenn Du nicht gerade Zeilen hast, die mit einem Doppelpunkt beginnen, könnte das etwa so gehen:
01.
ECHO off & setlocal 
02.
:: SCRIPT BY: VIPY (Nov 2013) ------------------------------ 
03.
:: SCRIPT ERSETZT ZEILEN WENN DER SUCHSTRING IN ZEILE GEFUNDEN WURDE! SUCHE ZEILEN MIT SUCHSTRING "SeachStr" 
04.
:: IN DATEI "QuellDatei" UND ERSETZT DIE KOMPLETTE ZEILE MIT "ReplaceStr" SCHREIBT DABEI EINEN NEUE DATEI "ZielDatei" 
05.
::------------------------------------------------------------------ 
06.
 
07.
:ProMain 
08.
SET "QuellDatei=c:\test\test.txt" 
09.
SET "ZielDatei=c:\test\test2.txt" 
10.
SET "SearchStr=NSA CIA" 
11.
SET "ReplaceStr=DIESE ZEILE WURDE ERSTEZT !" 
12.
::--- WENN QUELLDATEI EXISTIERT LÖSCHE DIESE --- 
13.
DEL /F "%QuellDatei%" 2>nul 
14.
::--- WENN ZIELDATEI EXISTIERT LÖSCHE DIESE --- 
15.
DEL /f "%ZielDatei%" 2>nul 
16.
::--- LEGE VERZEICHNIS C:\TEST\ AN WENNN NCHT VORHANDEN --- 
17.
MD "c:\test" 2>nul 
18.
::--- EINGABE SUCHESTRING --- 
19.
SET /p "SearchStr=Eingabe Suchstring: " 
20.
CLS 
21.
::--- ERZEUGE DATEI %QuellDatei% --- 
22.
 >"%QuellDatei%" ECHO Text der gefunden werden muss sgNSA CIAblabal 
23.
>>"%QuellDatei%" ECHO Wissenschaft ist die Erweiterung des Wissens  
24.
>>"%QuellDatei%" ECHO NSA CIA das muss gefunden werden  
25.
>>"%QuellDatei%" ECHO DIE NÄCHSTE ZEILE IST LEER 
26.
>>"%QuellDatei%" ECHO. 
27.
>>"%QuellDatei%" ECHO DIE NÄCHSTEN 2 ZEILEN SIND LEER 
28.
>>"%QuellDatei%" ECHO. 
29.
>>"%QuellDatei%" ECHO. 
30.
>>"%QuellDatei%" ECHO weitere Zeile . 
31.
>>"%QuellDatei%" ECHO TEST=das ist nur ein Testtext 
32.
>>"%QuellDatei%" ECHO Test diese Zeile darf nicht gefunden werden NSA 
33.
ECHO ZEIGE DATEI AN #VORHER# 
34.
ECHO. 
35.
TYPE "%QuellDatei%" 
36.
ECHO. 
37.
ECHO _ 
38.
::--- IF EINGABE Q oder q EXIT SCRIPT ---+ 
39.
IF /I "%SearchStr%"=="q" GOTO :eof 
40.
FOR /f "tokens=1* delims=:" %%i IN ('FINDSTR /N "^" "%QuellDatei%"') DO ( 
41.
   SET "zeile=%%j" 
42.
   CALL :ProReplaceLine 
43.
44.
ECHO ZEIGE DATEI AN #NACHHER#_ 
45.
ECHO. 
46.
TYPE "%ZielDatei%" 
47.
ECHO. 
48.
ECHO ___ 
49.
GOTO ProMain 
50.
 
51.
:ProReplaceLine 
52.
setlocal enabledelayedexpansion 
53.
::--- STRING GEFUNDEN JA NEIN J/N --- 
54.
ECHO "%zeile%"|find /i "%SearchStr%">NUL && ( 
55.
    REM --- ERSETZE ZEILE IN DATEI --- 
56.
    >>"%ZielDatei%" ECHO %ReplaceStr% 
57.
) || ( 
58.
    REM --- SCHREIBE ORIGINALZEILE IN DATEI --- 
59.
    >>"%ZielDatei%" ECHO.%zeile% 
60.
61.
endlocal 
62.
GOTO :EOF
Grüße
bastla

P.S.: Eine passende Formatierung Deines Batch-Ansatzes (als "Code") kannst Du auch nachträglich noch hinzufügen ...
Bitte warten ..
Mitglied: Viper-Berlin
15.11.2013 um 15:38 Uhr
Besten DANK.
Bitte warten ..
Mitglied: Biber
15.11.2013, aktualisiert um 22:57 Uhr
Moin Viper-Berlin,

hast du denn auch bastlas kleine Bitte im P.S. gelesen und verstanden?
Und magst du bitte auch selbsttätig deine Frage auf "Gelöst" setzen, wenn sie das für dich ist?

Danke und schönes Wochenende
Biber
Bitte warten ..
Mitglied: Viper-Berlin
15.11.2013 um 23:58 Uhr
Servus Biber ,

nein die Aufgabe ist leider noch nicht gelöst...

ich brauche einen Job der aus einer Textdatei
1. Zeilen ausließest original
2. Zeilen bearbeitet
3. und Zeilen mit Originalinhalten zurückschreibt auch !"§$%&/()=?*'Ä'* und auch Zeilen mit nichts drin, oder nur Blanks usw
und das macht bis jetzt kein Script ????

Deshalb würde ich es gerne noch auf Ungelöst lassen.
Dieses CMD geraffel verbrät Zeit ohne Ende und man bekommt doch keine Sinnvolle Lösung hin.

hab immer noch die Frage:

Habe jetzt einen Zwischenlösung die halbwegs funktioniert....
aber bei zeichen wie !"§$%&/()=?`*'+#ß`*#+`ß0 in Datei hängt sich das Script auf
es liegt an der

ABSTURTZ BEI ZEICHEN WIE !"§$%&/()=??'*`?= usw
Zeile: FOR /f "delims=" %%i IN ('FINDSTR /N $ "%QuellDatei%"') DO .

Übergibt KEINE LEERZEILEN DO DAS ZEILEN NACHHER FEHLEN
Zeile: FOR /f "delims=" %%i IN ('FINDSTR . "%QuellDatei%"') DO

FRAGE: was ist da Falsch ???

Vielleicht hast du eine Lösung Biber ?
ich denke das ist ein generelle Problem mit dem ECHO Befehl, man bräuchte eine Procedure die Variableninhalte
umwandelt so das alles in ECHO Anweisung angezeigt werden
also das ECHO %TextKomplett% auch wirklich ausgegeben wird.

also besten Dank......
der Vipy
Bitte warten ..
Mitglied: bastla
16.11.2013 um 10:45 Uhr
Hallo Viper-Berlin!

Batch ist bei komplexeren Textinhalten nicht das richtige Werkzeug - versuch es mit dem folgenden VBScript:
01.
Quelle = "c:\test\test.txt" 
02.
Ziel   = "c:\test\test2.txt" 
03.
 
04.
SearchStr  = "NSA CIA" 
05.
ReplaceStr = "DIESE ZEILE WURDE ERSETZT !" 
06.
 
07.
Ein = InputBox("Eingabe Suchstring: ") 
08.
If Ein <> "" Then SearchStr = Ein 
09.
 
10.
Set fso = CreateObject("Scripting.FileSystemObject") 
11.
T = Split(fso.OpenTextFile(Quelle).ReadAll, vbNewLine) 
12.
 
13.
For i = 0 To UBound(T) 
14.
    If InStr(T(i), SearchStr) > 0 Then T(i) = ReplaceStr 
15.
Next 
16.
 
17.
fso.CreateTextFile(Ziel).Write Join(T, vbNewLine)
Grüße
bastla
Bitte warten ..
Mitglied: Viper-Berlin
20.11.2013 um 12:05 Uhr
Schönen Dank

ok dann muss ich wohl VBS lernen, kannst du mir einen Seite empfehlen ?
was ist am einfachsten zu lernen Powershell VBS mit was macht man solche Jobs
für 2003 2008 Server usw. heute ??
Gibts für VBS einen kostenlosen Editor.

Besten Dank !
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Mit batch zeilen auslesen (2)

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
gelöst VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen) (5)

Frage von Luuke257 zum Thema Batch & Shell ...

Batch & Shell
Batch Script Editor - Programmvorstellung des Entwicklers (16)

Tipp von wowItsDoge zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...