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 Batch-Problem Inhalt aus Datei auslesen, bearbeiten und dann wieder speichern

Mitglied: AllForOne94

AllForOne94 (Level 1) - Jetzt verbinden

18.03.2014, aktualisiert 12:15 Uhr, 1511 Aufrufe, 9 Kommentare

Hallo Com,
Ich habe eigentlich ein relativ simples Problem.

Meine Ausgangsdatei ist so aufgebaut:
0,00h
1,00h
2,18h
3,00h
4,00h
5,00h
6,00h
7,00h
8,00h
9,00h
10,00h
11,00h
12,00h
13,00h
14,00h
15,00h
16,4Fh
17,80h
18,80h
19,80h
....
231,00h
232,00h

Es ist eine txt-Datei.
Ich möchte jetzt, dass der Inhalt eingelesen wird und folgendermaßen wieder ausgegeben wird.

/sc00000/sc00100/sc00218

Also der Aufbau ist:
/s + c0 + Zahl vor dem Komma in Hexadezimal umwanlden + Zahl nach dem Komma ohne h hinschreiben.

Das ganze soll dann wieder in einer txt-Datei ausgegeben werden.

Ich habe mir gedacht, dass es mit Batch ganz gut. Nur ich habe viel zu wenig Ahnung davon und bin so auf etwas Unterstützung angewiesen.

Vielen Dank
Mitglied: bastla
LÖSUNG 18.03.2014, aktualisiert um 16:26 Uhr
Hallo AllForOne94 und willkommen im Forum!

Ich würde (hinsichtlich der Konvertierung in Hex) VBS bevorzugen, das ließe sich aber zur Not auch in Batch erledigen - allerdings ist mir die gewünschte Ausgabe nicht wirklich klar: Soll aus der gesamten Datei tatsächlich nur eine Zeile entstehen, bzw wie viele Zeilen der Ausgangsdatei (lt Deinem Beispiel wären das zunächst einmal 3) sollen zu einer Zeile in der Ergebnisdatei zusammengefasst werden?

Soferne jeweils wieder eine eigene Zeile entstehen soll, als VBScript etwa so:
01.
Ein = "D:\Ausgangsdatei.txt" 
02.
Aus = "D:\Ergebnisdatei.txt" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
Daten = Split(fso.OpenTextFile(Ein).ReadAll, vbNewline) 
06.
 
07.
For Each Zeile In Daten 
08.
    If Trim(Zeile) <> "" Then 
09.
        Werte = Split(Replace(Zeile, "h", ""), ",") 
10.
        Ausgabe = Ausgabe & vbNewLine & "/sc0" & Right("0" & Hex(Werte(0)), 2) & Werte(1) 
11.
    End If 
12.
Next 
13.
fso.CreateTextFile(Aus).Write Mid(Ausgabe, 3)
[Edit] Da wir nun wissen, dass es nur eine Ausgabezeile geben soll, wäre die Zeile 10 auf
Ausgabe = Ausgabe & "/sc0" & Right("0" & Hex(Werte(0)), 2) & Werte(1)
und die Zeile 13 auf
so.CreateTextFile(Aus).Write Ausgabe
zu ändern.
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: laster
18.03.2014, aktualisiert um 11:52 Uhr
Hallo,

hier eine Möglichkeit mit JScript (als ausbaufähige Vorlage):

01.
// Ein- uns Ausgabe DateieNamen definieren 
02.
var src="___in.txt"; 
03.
var dst="___out.txt"; 
04.
 
05.
// Ein- und Ausgabe Dateien oeffnen 
06.
var fp1 = OpenFile(src, "r");   
07.
var datei = fp1.ReadAll(); 
08.
fp1.Close(); 
09.
 
10.
var fp2 = CreateFile(dst); 
11.
 
12.
// Hilfsvariablen 
13.
var zeile = ""; 
14.
var s1 = ""; 
15.
var s2 = ""; 
16.
var zeileOut = ""; 
17.
var i = 0; 
18.
var x = 0; 
19.
var saZeilen = datei.split("\r\n"); 
20.
for (i = 0; i < saZeilen.length; i++) { 
21.
  zeile = saZeilen[i]; 
22.
  if (zeile.indexOf(",") > 0) { 
23.
    // Teil vor dem Komma 
24.
    s1 = zeile.split(",")[0];  
25.
    s1 = parseInt(s1,16); 
26.
    // Teil nach dem Komma 
27.
    s2 = zeile.split(",")[1]; 
28.
    s2 = s2.substring(0, s2.length - 1); 
29.
    // ... und zusammenbauen 
30.
    zeileOut = "/sc0" + s1 + "/sc0" + s2; 
31.
    fp2.WriteLine(zeileOut); 
32.
    x++; 
33.
34.
35.
fp2.Close(); 
36.
 
37.
WScript.Echo("OK, "+x+" Zeilen gelesen und ...");   
38.
 
39.
///////////////////////////////////////////////////////////////////////////////////////////// 
40.
 
41.
/** Create TextDatei. 
42.
 * @param name String kompletter Dateiname 
43.
 * @return tf  Objekt FilePointer 
44.
 */ 
45.
function CreateFile(name) { 
46.
  var fso, tf; 
47.
  fso = new ActiveXObject("Scripting.FileSystemObject"); 
48.
  tf = fso.CreateTextFile(name, true); 
49.
  return tf; 
50.
51.
 
52.
/** Open TextDatei. 
53.
 * @param name String kompletter Dateiname 
54.
 * @return tf  Objekt FilePointer 
55.
 */ 
56.
function OpenFile(name, mod) { 
57.
  var fso, tf, mode; 
58.
  if (mod == "r") { 
59.
    mode = 1; 
60.
  }   
61.
  if (mod == "w") { 
62.
    mode = 2; 
63.
  }   
64.
  if (mod == "a") { 
65.
    mode = 8; 
66.
  }   
67.
  fso = new ActiveXObject("Scripting.FileSystemObject"); 
68.
  tf = fso.OpenTextFile(name, mode); 
69.
  return tf; 
70.
}
VG
LS
Bitte warten ..
Mitglied: AllForOne94
18.03.2014 um 11:59 Uhr
Ja ok habe ich etwas unsauber formuliert.
Es soll wie du richtig angenommen hast nur eine Zeile entstehen.
In der Ausgangsdatei sind es 233 Zeilen.

Das JScript sieht schon mal ganz gut.
Die Hex-Umwandlung ist noch nicht drin oder?
Bitte warten ..
Mitglied: colinardo
LÖSUNG 18.03.2014, aktualisiert um 12:44 Uhr
Hi,
ungefähr so ?
01.
@echo off & setlocal ENABLEDELAYEDEXPANSION 
02.
set "fileIN=c:\daten_in.txt" 
03.
set "fileOUT=C:\daten_out.txt" 
04.
for /f "usebackq tokens=1,2 delims=," %%a in ("%fileIN%") DO @( 
05.
	call :toHex %%a hex 
06.
	set nachkomma=%%b 
07.
	set nachkomma=!nachkomma:~0,2! 
08.
	set merge=!merge!/sc!hex!!nachkomma! 
09.
10.
echo !merge!>"%fileOUT% 
11.
goto end 
12.
 
13.
:toHex 
14.
set /a dec=%~1 
15.
set "hex=" 
16.
set "map=0123456789ABCDEF" 
17.
for /L %%N in (1,1,8) do ( 
18.
    set /a "d=dec&15,dec>>=4" 
19.
    for %%D in (!d!) do set "hex=!map:~%%D,1!!hex!" 
20.
21.
set "hex=!hex:~5,3! 
22.
(  
23.
    ENDLOCAL 
24.
    SET %~2=%hex% 
25.
26.
goto :eof 
27.
 
28.
:end
Quelle toHex-Funktion: dostips.com

Grüße Uwe
Bitte warten ..
Mitglied: laster
LÖSUNG 18.03.2014, aktualisiert um 12:15 Uhr
Die Hex-Umwandlung ist drin, Zeile 25: String.parsInt(value, basis)
Siehe http://www.w3schools.com/jsref/jsref_parseint.asp
VG
LS
Bitte warten ..
Mitglied: laster
18.03.2014 um 12:08 Uhr
Hallo Uwe,

NICHT SCHLECHT !

vG
LS
Bitte warten ..
Mitglied: AllForOne94
18.03.2014, aktualisiert um 12:24 Uhr
Ja Uwe das funktioniert ja mal perfekt.
Herzlichen Dank!
Ich hätte Jahre gebraucht....

Edit: Ein kleines Problem gibt es noch.
Am Anfang wenn 01 etc nur einstellig ist wird statt 01 nur 1 geschrieben. Ich bräuchte aber ein 01.
Bitte warten ..
Mitglied: bastla
LÖSUNG 18.03.2014, aktualisiert um 16:26 Uhr
Hallo AllForOne94!
Am Anfang wenn 01 etc nur einstellig ist wird statt 01 nur 1 geschrieben. Ich bräuchte aber ein 01.
Sollte in der VBS-Variante funktionieren ...

Grüße
bastla
Bitte warten ..
Mitglied: colinardo
LÖSUNG 18.03.2014, aktualisiert um 16:26 Uhr
Zitat von AllForOne94:
Edit: Ein kleines Problem gibt es noch.
Am Anfang wenn 01 etc nur einstellig ist wird statt 01 nur 1 geschrieben. Ich bräuchte aber ein 01.
ist angepasst.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch : alle Dateien eines Ordners bearbeiten

gelöst Frage von deguonkelBatch & Shell1 Kommentar

Hallo, ich habe folgendes Problem, ich habe ein fertiges Batch-Programm, bei dem man einen Dateipfad angibt, und diese Datei ...

Batch & Shell

Datum in Datei speichern und wieder auslesen

gelöst Frage von AndroxinBatch & Shell3 Kommentare

Moinsen, ich spiele gerade ein wenig mit der Powershell und Zeitstempeln rum: Zeitstempel mit Get-Date erstellen, als String in ...

Batch & Shell

BATCH ini Datei Datei auslesen

gelöst Frage von Juergen42Batch & Shell2 Kommentare

Hallo zusammen, ich möchte eine ini Datei auslesen mit folgenden Aufbau INHALT DER INI ID=30 NAME="test1" PFAD="K:\Kontoauszug\Test1\*.pdf" PFAD_S="K:\Kontoauszug\Test1\Sicherung\" ID=28 ...

Batch & Shell

Anfangstext bei einer xml Datei bearbeiten durch Batch Datei

gelöst Frage von GrauerStarBatch & Shell5 Kommentare

Hallo :D Ist das möglich so wie ich mir das vorstelle?: Eine Batch Datei die in einem Ordner automatisch ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 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 1 TagSicherheit

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 2 TagenDatenschutz8 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 2 TagenSicherheit

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

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs10 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall10 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)8 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...