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

Per Batch beliebiges Dateiformat mit Editor öffnen und als .txt abspeichern

Frage Entwicklung Batch & Shell

Mitglied: knechtibus

knechtibus (Level 1) - Jetzt verbinden

05.08.2009, aktualisiert 09:34 Uhr, 11652 Aufrufe, 17 Kommentare

Hallo miteinander,

ich möchte gern eine Datei mittels Batch mit dem Editor öffnen und dann als .txt abspeichern. Ich geb mal ein kleines Beispiel:

Dat1.rf7 soll mit "in" den Editor geöffnet werden und anschließend als Dat1.txt abgespeichert werden.

Ich habe schon versucht nur die Dateiformat-Endung zu ändern (einfach von .rf7 zu .txt), was allerdings die Datei scheinbar nicht soweit verändert, als das man anschließend die Resultierende .txt zu 100% weiterverarbeiten kann. Wenn man die Datei manuell mit dem Editor öffnet und abspeichert macht das Weiterverarbeiten keine Probleme. Deswegen der eventuell umständlich erscheinende Weg mit dem Editor.
Freue mich auf eure Antworten.

Mit freundlichen Grüßen
knechtibus
Mitglied: SchoSeb
05.08.2009 um 10:24 Uhr
Hi,

auf Konsole:

type Dat1.rt7 > Dat1.txt

funktioniert nicht?

Gruß Sebastian
Bitte warten ..
Mitglied: knechtibus
05.08.2009 um 10:33 Uhr
Hallo SuperMariO,

das hatte ich auch gleich als erstes versucht. Das Problem ist einfach, dass der Editor beim Öffnen und anschließenden Speichern die Datei schinbar ein wenig verändert. Genau diese Veränderung benötige ich leider. Hab mir die manuell geöffnet/gespeicherten und die mit "type" formatierten mal in einem HEX-Editor angeschaut.

Manuell -> Leerzeichen zwischen den einzelnen Zeichen
"type" -> Punkte zwischen den einzelnen Zeichen

Nun benötige ich leider die Leerzeichen und nicht die Punkte

Mit freundlichen Grüßen
knechtibus
Bitte warten ..
Mitglied: knechtibus
05.08.2009 um 11:53 Uhr
Hallo miteinander,

so ich habe jetzt noch ein bisschen rumprobiert und bin bis jetzt soweit das ich die Datei mit dem Editor öffnen kann. Wie ich die geöffnete Datei dann jedoch auch wieder in ein Verzeichnis abspeichern kann fehlt mir leider noch.

01.
 notepad "C:\Test\Dat1.rf7" 
Wie man sieht sehr einfach. Fehlt aber noch das abspeichern in eine Datei.

Mit freundlichen Grüßen
knechtibus
Bitte warten ..
Mitglied: bastla
05.08.2009 um 12:03 Uhr
Hallo knechtibus!

Auch wenn es wahrscheinlich eine andere (und jedenfalls bessere) Lösung gibt, als den "Editor" fernzusteuern, machbar wäre es (allerdings nur als "Bastelei" im wahrsten Sinn des Wortes ):
01.
@echo off & setlocal 
02.
set "Ordner=D:\Ordner Test" 
03.
set "Datei=dat1.rf7" 
04.
 
05.
set S=%temp%\SaveAsText.vbs 
06.
>%S%  echo set Sh=WScript.CreateObject("WScript.Shell"):Datei=WScript.Arguments(1) 
07.
>>%S% echo Cmd="notepad.exe """^&WScript.Arguments(0)^&"\"^&^Datei^& """" 
08.
>>%S% echo Sh.Run Cmd:WScript.Sleep 1000:Sh.AppActivate Datei^&" - Editor":WScript.Sleep 100 
09.
>>%S% echo Sh.SendKeys "%%du{ENTER}":WScript.Sleep 1000:Sh.SendKeys "%%db" 
10.
 
11.
for %%i in ("%Ordner%\%Datei%") do ( 
12.
    set "Dateiname=%%~ni" 
13.
    copy "%%~i" "%Ordner%\%%~ni" >nul 
14.
15.
 
16.
if exist "%Ordner%\%Dateiname%.txt" echo Textdatei bereits vorhanden! & goto :eof 
17.
cscript //nologo %S% "%Ordner%" "%Dateiname%" 
18.
del "%Ordner%\%Dateiname%"
In den folgenden Zeilen sind jeweils Pausen von 1 Sekunde (da Angabe in ms mit dem Wert 1000) für das Starten des Editors und für das Speichern enthalten - vielleicht musst Du diese verlängern, um auf der sicheren Seite zu sein:
>>%S% echo Sh.Run Cmd:WScript.Sleep 1000:Sh.AppActivate Datei^&" - Editor":WScript.Sleep 100 
>>%S% echo Sh.SendKeys "%%du{ENTER}":WScript.Sleep 1000:Sh.SendKeys "%%db"
Kurz zum Ablauf:
Zunächst wird das "Fernsteuerungs-Script" in VBS erstellt - dieses erwartet beim Aufruf als Parameter den Pfad (ohne abschließenden "\") und den Dateinamen.

Da der Editor in der Titelleiste (zumindest bei mir) nur den Dateinamen anzeigt (aber aufgrund dieser Information das Editor-Fenster gefunden werden muss) und auch beim Speichern keine Datei "dat1.rf7.txt", sondern "dat1.txt" entstehen soll, wird zunächst eine Kopie der Ausgangsdatei (wodurch diese als Sicherung erhalten bleibt) ohne Dateityp erzeugt und (scriptgesteuert) an den Editor zum "Neuspeichern" übergeben. Abschließend wird diese Kopie wieder entsorgt.

Grüße
bastla
Bitte warten ..
Mitglied: stbewo
05.08.2009 um 12:08 Uhr
Hi knechtibus,

öffne mal ein CMD prompt mit dem Parameter /U (= Unicode) und anschl. ein "Type Dat1.rt7 > Dat1.txt".

Gruß
Stefan
Bitte warten ..
Mitglied: knechtibus
05.08.2009 um 12:16 Uhr
Hallo bastla,

also ein bisschen gruselig ist das ja schon ;) Wiedereinmal eine Lösung die sofort funktioniert und genau das tut, wie im Problem beschrieben. Ich danke dir vielmals für deine Hilfe, da wird ja langsam ein Kasten Bier fällig ;)

Mit freundlichen Grüßen
knechtibus
Bitte warten ..
Mitglied: bastla
05.08.2009 um 12:37 Uhr
Hallo knechtibus!

Als "Lösung" würde ich die Spielerei da oben nicht bezeichnen - wenn Du damit eine Massenkonvertierung unter Aufsicht vornehmen willst, wäre das vielleicht grade noch ok; als Bestandteil eines unbeaufsichtigt ablaufenden Batches aber nicht - es kann zwischen den simulierten Tastendrücken einfach zu viel (oder zu wenig) passieren ...
Lässt sich etwas näher eingrenzen, um welches Format es bei den zu konvertierenden Dateien geht (Unicode würde ich eher nicht annehmen, da bei einem "type" ja eine implizite Konvertierung nach ASCII erfolgen sollte und es damit nicht geklappt hat)?

Grüße
bastla
Bitte warten ..
Mitglied: knechtibus
05.08.2009 um 13:13 Uhr
Hallo bastla,

ich werd's mal ausprobieren und einen Testlauf mit deiner Lösung starten. Dann kann ich ja mal sehen wie sich diese Variante unter Realbedingungen schlägt. Bei dem Format handelt es sich um Dateien die ein Protokoll-Analysator ausgibt, es handelt sich um trace Dateien. Wie diese Dateien im einzelnen aufgebaut sind kann ich dir leider gar nicht sagen.

Mit freundlichen Grüßen
knechtibus
Bitte warten ..
Mitglied: knechtibus
05.08.2009 um 13:50 Uhr
Hallo bastla,

habe da noch eine kurze Frage. Kann ich mit der von dir vorgeschlagenen Variante die .txt die erstellt wird, auch überschreiben und wenn ja wie? Will also, dass die erstellte .txt immer den gleichen Namen hat und den jeweiligen Voränger überschreibt.

Mit freundlichen Grüßen
knechtibus
Bitte warten ..
Mitglied: bastla
05.08.2009 um 15:14 Uhr
Hallo knechtibus!
Kann ich mit der von dir vorgeschlagenen Variante die .txt die erstellt wird, auch überschreiben und wenn ja wie?
Etwa so:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Ordner Test" 
03.
set "Datei=dat1.rf7" 
04.
 
05.
set S=%temp%\SaveAsText.vbs 
06.
>%S%  echo set Sh=WScript.CreateObject("WScript.Shell"):Datei=WScript.Arguments(1)^&".txt" 
07.
>>%S% echo Cmd="notepad """^&WScript.Arguments(0)^&"\"^&^Datei^& """" 
08.
>>%S% echo Sh.Run Cmd:WScript.Sleep 1000:Sh.AppActivate Datei^&" - Editor":WScript.Sleep 100 
09.
>>%S% echo Sh.SendKeys "^s":WScript.Sleep 1000:Sh.SendKeys "%%db" 
10.
 
11.
for %%i in ("%Ordner%\%Datei%") do ( 
12.
    set "Dateiname=%%~ni" 
13.
    copy "%%~i" "%Ordner%\%%~ni.txt" >nul 
14.
15.
 
16.
cscript //nologo %S% "%Ordner%" "%Dateiname%"
Grüße
bastla
Bitte warten ..
Mitglied: knechtibus
06.08.2009 um 10:12 Uhr
Hallo bastla,

danke für die Erweiterung deiner Lösung. Leider funktioniert diese nur bedingt. Wenn der Editor die Datei überschreiben will, erfordert dies erst eine manuelle Bestätigung für das Überschreiben. Erst nach dem Bestätigen wird weiter fortgefahren. Meinst du man kann Dem irgendwie abhelfen?

Mit freundlichen Grüßen
knechtibus
Bitte warten ..
Mitglied: bastla
06.08.2009 um 13:07 Uhr
Hallo knechtibus!

Eigentlich sollte es kein "Überschreiben" durch den Editor geben, sondern ein gewöhnliches "Speichern" - beim Aufruf des Editors wird ja bereits die Kopie (also "Dat1.txt") übergeben ...

Wie sieht denn der Ablauf aus, wenn Du "echo on" verwendest? Der Aufruf des Scripts müsste etwa so erfolgen:
D:\>cscript //nologo C:\DOKUME~1\Username\LOKALE~1\Temp\SaveAsText.vbs "D:\Ordner Test" 
 "Dat1"
Dem als zweitem Parameter übergebenen Dateinamen fügt das Script dann noch ein ".txt" hinzu und ruft damit den Editor auf - um das zu testen, könntest Du zwischen den Zeilen 8 und 9 einfügen:
>>%S% echo WScript.Echo Cmd
Das Ergebnis müsste dann etwa so aussehen:
notepad "D:\Ordner Test\Dat1.txt"
Mehr kann ich von hier aus nicht abschätzen (bei mir funktioniert's nämlich) ...

Grüße
bastla
Bitte warten ..
Mitglied: knechtibus
06.08.2009 um 13:29 Uhr
Hallo bastla,

habe das Problem soeben auf eine andere Art und Weise gelöst. Funktioniert nun auch so. Danke trotzdem für deine Mühe.
Habe allerdings noch ein anderes Problem mit einer anderen Batch-Datei. Diese sollte die aktuellste Datei finden und den Inhalt in eine .txt Datei kopieren. Nun soll diese jedoch nicht die aktuellste sondern die genau eins davor identifizieren und in eine .txt Datei kopieren. Folgender Code gilt als Grundlage:

01.
@echo off & setlocal 
02.
set "Quelle=C:\TraceDat" 
03.
set "Ziel=C:\akt_trace.txt" 
04.
::Pause in Sekunden festlegen 
05.
set "Pause=10" 
06.
pushd "%Quelle%" 
07.
set "Zuletzt=_" 
08.
 
09.
:Schleife 
10.
set "Neueste=" 
11.
for /f "delims=" %%i in ('dir /b /on /a-d 2^>nul') do set "Neueste=%%i" 
12.
echo Um %time:~,8% gefunden: %Neueste% 
13.
if defined Neueste if "%Neueste%" neq "%Zuletzt%" ( 
14.
    copy "%Neueste%" "%Ziel%">nul 
15.
    set "Zuletzt=%Neueste%" 
16.
    echo Um %time:~,8% kopiert: %Neueste% 
17.
18.
::Pausieren 
19.
sleep %Pause% 
20.
goto :Schleife
Hoffe das ist nicht allzu umsändlich.

Mit freundlichen Grüßen
knechtibus
Bitte warten ..
Mitglied: bastla
06.08.2009 um 14:25 Uhr
Hallo knechtibus!

Sollte so gehen:
01.
set "Quelle=C:\TraceDat" 
02.
set "Ziel=C:\akt_trace.txt" 
03.
::Pause in Sekunden festlegen 
04.
set "Pause=10" 
05.
pushd "%Quelle%" 
06.
set "Zuletzt=_" 
07.
 
08.
:Schleife 
09.
set "Zweite=" 
10.
for /f "skip=1 delims=" %%i in ('dir /b /o-n /a-d 2^>nul') do if not defined Zweite set "Zweite=%%i" 
11.
if defined Zweite echo Um %time:~,8% gefunden: %Zweite% 
12.
if defined Zweite if "%Zweite%" neq "%Zuletzt%" ( 
13.
    copy "%Zweite%" "%Ziel%">nul 
14.
    set "Zuletzt=%Zweite%" 
15.
    echo Um %time:~,8% kopiert: %Zweite% 
16.
17.
::Pausieren 
18.
sleep %Pause% 
19.
goto :Schleife
Grüße
bastla
Bitte warten ..
Mitglied: knechtibus
07.08.2009 um 09:29 Uhr
Hallo bastla,

entschuldige die verspätete Antwort. Konnte es leider erst heute ausprobieren. Dafür funktioniert es aber mal wieder einwandfrei. Danke dir für deine schnelle Hilfe und Lösung.
Eine kurze Frage hätte ich noch zum eigentlichen Thema dieses Beitrages. Die Funktionsweise ist absolut zufriedenstellend aber nun wollte ich, dass die erstellete .txt Datei immer den gleichen Namen erhält (z.B. test.txt) und dann in ein bestimmtes Verzeichnis (z.B. C:\test\Gruppe\) kopiert wird. Das Verzeichnis für die Quelle kann gleich bleiben. Hab schon ein bisschen rumgespielt aber er erstellt mir die Datei immer in dem Ordner wo er auch die "Quelldatei" im .rf7 Format findet.

Mit freundlichen Grüßen
knechtibus
Bitte warten ..
Mitglied: bastla
07.08.2009 um 10:02 Uhr
Hallo knechtibus!

Das macht's eigentlich einfacher:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Ordner Test" 
03.
set "Datei=dat1.rf7" 
04.
set "Ziel=D:\Test\Gruppe" 
05.
set "Dateiname=test" 
06.
 
07.
if not exist "%Ziel%" md "%Ziel%" 
08.
set S=%temp%\SaveAsText.vbs 
09.
>%S%  echo set Sh=WScript.CreateObject("WScript.Shell"):Datei=WScript.Arguments(1)^&".txt" 
10.
>>%S% echo Cmd="notepad """^&WScript.Arguments(0)^&"\"^&^Datei^& """" 
11.
>>%S% echo Sh.Run Cmd:WScript.Sleep 1000:Sh.AppActivate Datei^&" - Editor":WScript.Sleep 100 
12.
>>%S% echo Sh.SendKeys "^s":WScript.Sleep 1000:Sh.SendKeys "%%db" 
13.
 
14.
copy "%Ordner%\%Datei%" "%Ziel%\%Dateiname%.txt" >nul 
15.
 
16.
cscript //nologo %S% "%Ziel%" "%Dateiname%"
Grüße
bastla
Bitte warten ..
Mitglied: knechtibus
07.08.2009 um 10:58 Uhr
Hallo bastla,

ja das ist wirklich noch einfacher und dazu funktioniert es auch noch perfekt
Ich danke die für deinen unermüdlichen Einsatz und die daraus resultierenden Ergebnisse.

Mit freundlichen Grüßen
knechtibus
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...