Top-Themen

Aktuelle Themen (A bis Z)

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

Batch zum erstellen von Textdateien von Textvorlage

Mitglied: XXXXBitter

XXXXBitter (Level 1) - Jetzt verbinden

28.11.2012 um 09:37 Uhr, 1421 Aufrufe, 1 Kommentar

Hallo,

ich habe mal ein Anliegen an die Batch-Profis hier. Ich bin absolut keiner, bin aber auf der Suche nach einer guten Lösung und habe auch schon versucht über die Suche etwas zu finden, finde aber immer nur ähnliche Vorhaben und die werden teilweise mit sehr unterschiedlichen Varianten gelöst. Also es geht um folgendes:

Ich habe eine (mehrzeilige) Textdatei in der ich ein bestimmtes Wort ersetzen und die Datei anschließend unter einem neuen Namen speichern möchte. Im Prinzip hätte ich sogar gerne zwei Varianten:

1. Eine Batch die eine Benutzeringabe abfragt welche den Inhalt angibt mit dem dieses eine bestimmte Wort ersetzt wird (ich nenne es mal "Ersatzwort"). Der Dateiname ist eigentlich relativ egal, im Prinzip kann es auch die Eingabe als Dateinamen benutzen.

2. Eine zweite schöne Variante wäre noch, wenn man der Batch sagen könnte, dass es eine weitere Textadatei quasi als Eingabedatei benutzt. Diese würde jede Eingabe in einer einzelnen Zeile enthalten, sprich für jede Zeile in dieser Textdatei, würde eine neue Textdatei entstehen, in der dieses "Ersatzwort" durch die Textzeile ersetzt wird.


Ich hoffe das Ganze verständlich beschrieben zu haben und eine schöne Lösung dazu zu erhalten. Ich weiß, dass es sicher mehrere Möglichkeiten gibt sich das so irgendwie hinzubasteln, bin aber auch sehr daran interessiert was mir die Experten hier als die eleganteste Lösung vorschlagen...


Vielen Dank schonmal vorweg
Mitglied: Friemler
28.11.2012, aktualisiert 29.11.2012
Hallo XXXXBitter,

hier mein Vorschlag zur Lösung des Problems:
01.
const ForReading   = 1 
02.
const ForWriting   = 2 
03.
const ForAppending = 8 
04.
 
05.
 
06.
Set colArgsNamed   = WScript.Arguments.Named 
07.
Set colArgsUnnamed = WScript.Arguments.Unnamed 
08.
 
09.
 
10.
If colArgsNamed.Count >= 3 Then 
11.
  If colArgsNamed.Exists("I") Then strInFile          = colArgsNamed("I") 
12.
  If colArgsNamed.Exists("P") Then strPattern         = colArgsNamed("P") 
13.
  If colArgsNamed.Exists("R") Then strReplacement     = colArgsNamed("R") 
14.
  If colArgsNamed.Exists("F") Then strReplacementFile = colArgsNamed("F") 
15.
 
16.
  If strInFile <> "" And strPattern <> "" And (strReplacement <> "" Or strReplacementFile <> "") Then 
17.
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
18.
 
19.
    If objFSO.FileExists(strInFile) Then 
20.
      If strReplacement = "" Then 
21.
        If objFSO.FileExists(strReplacementFile) Then 
22.
          Set objReplacementFile = objFSO.GetFile(strReplacementFile) 
23.
          Set objInStream        = objReplacementFile.OpenAsTextStream(ForReading) 
24.
          strFileContent         = objInStream.ReadAll 
25.
          objInStream.Close 
26.
 
27.
          arrReplacements = Split(strFileContent, vbCrLf) 
28.
 
29.
          If arrReplacements(UBound(arrReplacements)) = "" Then 
30.
            ReDim Preserve arrReplacements(UBound(arrReplacements) - 1) 
31.
          End If 
32.
        End If 
33.
      Else 
34.
        arrReplacements = Array(strReplacement) 
35.
      End If 
36.
 
37.
      If Not IsEmpty(arrReplacements) Then 
38.
        Set objInFile   = objFSO.GetFile(strInFile) 
39.
        Set objInStream = objInFile.OpenAsTextStream(ForReading) 
40.
        strFileContent  = objInStream.ReadAll 
41.
        objInStream.Close 
42.
 
43.
        strInFilePath = objFSO.GetParentFolderName(strInFile) 
44.
        strInFileName = objFSO.GetBaseName(strInFile) 
45.
        strInFileExt  = objFSO.GetExtensionName(strInFile) 
46.
        intCntr       = 1 
47.
 
48.
        For Each strReplacement In arrReplacements 
49.
          'strNewFileContent = Replace(strFileContent, strPattern, strReplacement, 1, -1, vbTextCompare) 
50.
          strNewFileContent = Replace(strFileContent, strPattern, strReplacement, 1, -1, vbBinaryCompare) 
51.
 
52.
          strOutFile = objFSO.BuildPath(strInFilePath, strInFileName + "_" + CStr(intCntr) + "." + strInFileExt) 
53.
 
54.
          Set objOutStream = objFSO.CreateTextFile(strOutFile, True) 
55.
          objOutStream.Write strNewFileContent 
56.
          objOutStream.Close 
57.
 
58.
          intCntr = intCntr + 1 
59.
        Next 
60.
      Else 
61.
        WScript.Echo "Datei " + strReplacementFile + " nicht gefunden." 
62.
      End If 
63.
    Else 
64.
      WScript.Echo "Datei " + strInFile + " nicht gefunden." 
65.
    End If 
66.
  Else 
67.
    WScript.Echo "Fehlende Parameter" 
68.
  End If 
69.
Else 
70.
  WScript.Echo "Fehlende Parameter" 
71.
End If
Aufruf:
cscript /nologo <Scriptname>.vbs /i:<Eingabedatei> /p:<Suchwort> {/r:<Ersetzungswort> | /f:<Datei mit Ersetzungswörtern>}

Von den Parametern /r und /f kann nur einer angegeben werden. Wenn der Parameter /r angegeben wurde, wird ein evtl. gleichzeitig angegebener Parameter /f ignoriert.

Falls Eingabedatei, Suchwort, Ersetzungswort oder Datei mit Ersetzungswörtern Leerzeichen enthält, muss das Element in Anführungszeichen eingeschlossen werden.

Ich habe eine VBScript-Lösung gewählt, weil das Verarbeiten des Inhalts von Textdateien mit Batchscript regelmäßig fehlschlägt. Solche Textdateien enthalten oftmals Zeichen, die vom Batchinterpreter als Steuerzeichen interpretiert werden, was dazu führt, dass ein Batchscript mit Fehlermeldungen abbricht oder verstümmelte Ausgabedateien produziert.

Wenn Du Groß-/Kleinschreibung bei der Suche nach zu ersetzenden Wörtern ignorieren willst, lösche das Apostroph (Kommentarzeichen) am Anfang von Zeile 49 und setze am Anfang von Zeile 50 ein Apostroph oder lösche Zeile 50.

Gruß
Friemler
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Textdatei verschlüsseln per Batch
gelöst Frage von Nick2212Batch & Shell22 Kommentare

Hi Leute ich wollte einmal fragen ob es eine Möglichkeit gibt, den Inhalt einer Textdatei per Batch zu verschlüsseln ...

Batch & Shell
Batch Textdatei Spaltenweise auslesen
Frage von PinkFLuffyUnicornBatch & Shell7 Kommentare

hi, ist es irgendwie möglich anstatt eine Textdatei via Batch Spaltenweise auszulesen und nicht zeilenweise wie das normal ganz ...

Batch & Shell
Textdateien vergleichen BATCH
gelöst Frage von FeudelFredBatch & Shell2 Kommentare

Moin Moin, ich bin komplett neu im Forum und habe auch keine sonderlich großen Erfahrungen mit Foren. Habe eine ...

Batch & Shell
Batch Datei - Mehrzeilige Textdatei
gelöst Frage von SchmakusBatch & Shell5 Kommentare

Hallo Zusammen, ich möchte mit einer Batch Datei eine Textdatei erstellen. Ich verwende 2 Variablen (%1, %2). Die Textdatei ...

Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 2 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 8 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 22 StundenSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server38 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless21 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...