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!

Mitglied: OldRoadrunner

OldRoadrunner (Level 1) - Jetzt verbinden

25.10.2010 um 08:05 Uhr, 4383 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
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 18 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 18 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 1 TagSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
gelöst Frage von YellowcakeExchange Server23 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Downgrade von Windows Server 2016 auf 2012 - Wie vorgehen?
Frage von EstefaniaWindows Server13 Kommentare

Guten Ich habe eine Frage an Erfahrene unter euch. Durch einen InPlace Upgrade wurde Windows Server 2012 auf die ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...

Datenschutz
Telematikinfrastruktur Erfahrungsaustausch
Frage von MOS6581Datenschutz12 Kommentare

Moin, unter meinen Kunden befinden sich auch einige Ärzte, welche sich künftig mit der Telematikinfrastruktur-Geschichte der Gematik herumärgern dürfen. ...