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
GELÖST

Probleme beim ändern einer Zeile in einer .ws Datei per Batch!

Frage Entwicklung Batch & Shell

Mitglied: OldRoadrunner

OldRoadrunner (Level 1) - Jetzt verbinden

25.10.2010 um 08:05 Uhr, 4373 Aufrufe, 7 Kommentare

Ich weiß das Thema ist abgegriffen. Es sind hier viele tolle Beiträge dazu geschrieben worden.
Leider reicht das scheinbar für mein Problem nicht aus.

Problem:

In unserem Hause wird Client Access für AS400 Sitzungen eingesetzt.
Nun haben wir unterschiedliche Versionen installiert.
Grundsätzlich kein Problem.
Leider gibt es immer Probleme wenn sich ein User an einer älteren Version anmeldet wenn er vorher
an einen Rechner gesessen hat der eine neuere Version der besagten Software hat.
Durch die Änderung eines einzelnen Wertes ( Version= ) kann man aber gleich wieder arbeiten.
Diesen Vorgang möchte ich aber automatisieren.
Hier ein kurzer Auszug aus der Konfig-Datei:

[Profile]
ID=WS
Version=8
[CT]
trace=Y
[Telnet5250]
..........................

Um die Probleme zu beheben müßte mein Programm nach "Version" suchen und nachschauen ob dort die "8" steht.
Wenn ja sollte der Wert auf "7" geändert werden.
Leider hatte ich mit einigen Beispielen keinen Erfolg oder komische Ergebnisse (z.B. "8=Version=8" ...etc)
Ich versuche mich da schon 4 Wochen und bin da echt am verzweifeln da ich wenig Kenntnisse über die Einbundung von Variablen etc. habe.
Könnte mir jemand helfen und wenn ja mir das vollständige Skript (Batchprogramm) zur Verfügung stellen, da ich glaube das viele Beispiele hier nur Teile eines Programms sind.

Herzlichen Dank
Mitglied: laster
25.10.2010 um 09:14 Uhr
Hallo OldRoadrunner,

kein Problem, hier ein Javascript (aendern.js):
01.
var konfigdatei = "orginale-konfigdate.dat"; 
02.
var fp1 = OpenFile(konfigdatei, "r");   
03.
var konfiguration = fp1.ReadAll();  
04.
fp1.Close(); 
05.
 
06.
var konfigdateineu = "veraenderte-konfigdatei.dat" 
07.
var fp2 = CreateFile(konfigdateineu); 
08.
 
09.
var zeilen = konfiguration.split("\r\n"); 
10.
 
11.
for (i = 0; i < zeilen.length; i++) { 
12.
  if (zeilen[i].indexOf("Version=8") == 0) { 
13.
    fp2.WriteLine("Version=7"); 
14.
  } else { 
15.
    fp2.WriteLine(zeilen[i]); 
16.
17.
18.
 
19.
fp2.Close(); 
20.
 
21.
// Hilfsfunktionen 
22.
 
23.
/** Open TextDatei. 
24.
 * @param name String kompletter Dateiname 
25.
 * @return tf  Objekt FilePointer 
26.
 */ 
27.
function OpenFile(name, mod) { 
28.
  var fso, tf, mode; 
29.
  if (mod == "r") { 
30.
    mode = 1; 
31.
  }   
32.
  if (mod == "w") { 
33.
    mode = 2; 
34.
  }   
35.
  if (mod == "a") { 
36.
    mode = 8; 
37.
  }   
38.
  fso = new ActiveXObject("Scripting.FileSystemObject"); 
39.
  tf = fso.OpenTextFile(name, mode); 
40.
  return tf; 
41.
42.
 
43.
/** Create TextDatei. 
44.
 * @param name String kompletter Dateiname 
45.
 * @return tf  Objekt FilePointer 
46.
 */ 
47.
function CreateFile(name) { 
48.
  var fso, tf; 
49.
  fso = new ActiveXObject("Scripting.FileSystemObject"); 
50.
  tf = fso.CreateTextFile(name, true); 
51.
  return tf; 
52.
}
am Ende muss die neu erstellte Datei noch umkopiert werden:

01.
@echo off 
02.
cscript /nologo aendern.js 
03.
copy /Y veraenderte-konfigdatei.dat orginale-konfigdate.dat 
04.
:: Starte Dein Client Access für AS400 Programm
vG
LS
Bitte warten ..
Mitglied: OldRoadrunner
25.10.2010 um 09:38 Uhr
Danke Dir.
Wie rufe ich das den jetzt auf.
Habe es schon angepaßt.
Die Clients müssen das beim Anmelden per Script automatisch aufrufen.
Zum Glück liegt die zu ändernde Datei im Ordner "Eigene Dateien".

Per Batch wäre mir das lieber , aber wenn es funktioniert ;o)
Gruß
AP
Bitte warten ..
Mitglied: laster
25.10.2010 um 09:43 Uhr
Wie rufe ich das den jetzt auf.
eine Batchdatei erstellen mit dem Inhalt der letzten 4 Zeilen aus obiger Antwort
vG
LS
Bitte warten ..
Mitglied: OldRoadrunner
25.10.2010 um 09:57 Uhr
Puhhhh................ das läuft nicht............... :o(

Eingabefehler: Für die Dateierweiterung ".js" gibt es kein Skriptmodul

So wird es warscheinlich an allen PC´s enden.
Bitte warten ..
Mitglied: laster
25.10.2010 um 10:02 Uhr
Was sind denn das für Clients?
Wenn das Windows-Clients sind (wenigstens W2k) kannst Du doch die Scriptmodule installieren, musst Du halt einmal machen.
LS
Bitte warten ..
Mitglied: bastla
25.10.2010 um 10:13 Uhr
Hallo OldRoadrunner und willkkommen im Forum!

Als Alternative noch eine "Batch-only"-Variante:
01.
@echo off & setlocal 
02.
set "Conf=%userprofile%\Eigene Dateien\Config.txt" 
03.
set "Von=Version=8" 
04.
set "Nach=Version=7" 
05.
 
06.
set "ZNr=" 
07.
for /f "delims=:" %%i in ('findstr /n /x /c:"%Von%" "%Conf%"') do set "ZNr=%%i" 
08.
if not defined ZNr goto :Starten 
09.
 
10.
move "%Conf%" "%Conf%.bak" 
11.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Conf%.bak"') do ( 
12.
    if "%%i" neq "%ZNr%" ( 
13.
        echo\%%j 
14.
    ) else ( 
15.
        echo\%Nach% 
16.
17.
)>>"%Conf%" 
18.
 
19.
:Starten 
20.
::Aufruf Client
In dieser Version wird die Konfig-Datei nur neu erstellt, wenn sie eine Zeile "Version=8" enthält (Achtung: wegen des "/x" beim "findstr" wird auf exakte Übereinstimmung der gesamten Zeile geprüft - falls es zB am Ende der Zeile noch ein oder mehrere Leerzeichen gäbe, könntest Du auch weniger genau mit "/b" nur nach dem Zeilenanfang suchen lassen). Die alte Datei verbleibt dabei mit dem Zusatz ".bak" als Sicherungskopie.

Bitte beachten: Ersetzt wird (in dieser Fassung) nur die letzte (falls es mehrere geben sollte) passende Zeile! [Edit] Außerdem wird bei Zeilen, welche mit einem ":" beginnen, dieser nicht in die neue Datei übernommen! [/Edit]

Kurze Erklärung zum Ablauf:
In einem ersten Suchlauf wird nach dem Suchbegriff lt Variable "%Von%" gesucht und, falls eine oder mehrere entsprechende Zeilen gefunden werden, die Zeilennummer der letzten Fundstelle in "%ZNr%" vermerkt.
Wurde keine passende Zeile gefunden, wird gleich das Client-Programm aufgerufen.

Ist die gesuchte Zeile enthalten, wird zunächst die Sicherungskopie erstellt (mit "move" wird dabei automatisch - in einem Batch ist für "move" und auch "copy" kein Schalter "/y" erforderlich - eine ev schon bestehende ältere Sicherung überschrieben) und dann aus dieser Datei alle (inkl Leerzeilen) Zeilen ausgelesen und, soferne es sich nicht um die zu ersetzende Zeile handelt, unverändert in die Konfig-Datei geschrieben. Das Auslesen aller Zeilen wird durch die Verwendung des Suchbegriffes "^" sichergestellt, da auch leere Zeilen einen "Zeilenanfang" haben. Mit der Schreibweise "echo\%%j" (es wären anstelle des "\" auch verschiedene andere Zeichen - häufig wird ein Punkt verwendet - möglich) wird sicher gestellt, dass eine Leerzeile nicht als "ECHO ist eingeschaltet (ON)." geschrieben wird.
Für die zu ersetzende Zeile wird anstelle des Originalinhaltes dann eben "%Nach%" geschrieben.

Nach Bearbeitung aller Zeilen wird das Clientprogramm gestartet

Grüße
bastla
Bitte warten ..
Mitglied: OldRoadrunner
25.10.2010 um 10:59 Uhr
Also ich bin echt begeistert.

@laster : Danke für Deine schnelle Hilfe. Das mit dem Java hätte sicher auch prima funktioniert wenn die Clients das unterstützt hätten.

@bastla : Cooles Ding das geht prima und ist schon integriert in das alltägliche Scripting.
Danke für die tolle Erklärung, damit kann selbst ich die Funktionen dieses Scriptes einigermaßen durchdringen ;o)

DANKESCHÖN!
Bitte warten ..
Ähnliche Inhalte
Windows XP
Zeilen einer zusammengeführten CSV Datei über Batch ändern
Frage von NelspruitWindows XP12 Kommentare

Hallo zusammen, ich habe über batch ca. 1000 CSV Datein (Messdaten) zusammengeführt. Das Ganze schaut nun in der neuen ...

Batch & Shell
Mit Batch-Datei eine Datei lesen, Zeilen ändern und als neue Datei schreiben
gelöst Frage von GeoSemBatch & Shell20 Kommentare

Hallo Ich versuche nun schon seit einiger Zeit das "kleine" Script (unter Windows 8) zum laufen zu bringen - ...

Batch & Shell
Per Batch Datei öffnen erste Zeile ändern und in anderer Datei zurückschreiben
gelöst Frage von charlybyBatch & Shell10 Kommentare

Hallo an die Gemeinde als Anfänger hänge ich wohl an einer einfachen Sache fest. Es gibt eine xml Datei, ...

Batch & Shell
Zeile eine Datei per batch ersetzen
Frage von duckknightBatch & Shell2 Kommentare

Hallo die Damen und Herren, ich bin nun bei allen Suchanfragen immer wieder hier gelandet, habe aber das was ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 16 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 19 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...