Faxe des USB-Speicher in XP-Faxkonsole/Fax4Box anzeigen

terestus

Neuer User
Mitglied seit
16 Mrz 2008
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
1. Aufgabe:
Die Funktionalität des Programms Fritz!Fax soll durch ein Script erweitert werden.
Faxe die sich auf einem an der Fritz!Box angeschlossenen USB-Speicher befinden,
sollen mit Frirz!Fax dargestellt und verwaltet werden können.

2. Aktuelle Scriptversion: NasToFax4Box-1-5.bat

..................................... NasToFax4Box-1-3.bat

3. Erforderliche Software: Cfax enabled Ghostscript 8.54


Changelog:

30.07.2010 NasToFax4Box-1-5.bat

Neu: Usb-Speicher wird jetzt unter dem Namen Fritz.Nas im Netzwerk erkannt.
Neu: mehrere Partitionen/Laufwerke werden unterstützt.

22.05.2009 NasToFax4Box-1-3.bat

Neu: Rufnummer der Gegenstelle wird angezeigt.
Neu: Anzahl der Faxseiten werden angezeigt.
Neu: Textänderung in der Spalte Eigene Nr.

12.08.2008 NasToFax4Box-1-2.bat
Anpassung: AVM hat für die Firmware die Ordnernamen des an der Fritz!Box angeschlossenen USB-Speichers geändert.
Neu: Verbesserte Funktion des Datenbankbackups​

21.06.2008 NasToFax4Box-1-1.bat
Fehler bein erhöhen von Datensatzanzahl 10 o. 13 beseitigt.
NasToFax4Box lässt sich in Systemsteuerung unter Software deinstallieren.
Eine Verknüpfung im Startmenü wird bei installation angelegt.
Die Desktopverknüpfung lässt sich nun ändern.
Eine Readme-Datei wird beim installieren angezeigt.
Die Stabillität wurde verbessert.​

20.05.2008 NASToFax4Box.bat
Das Script erkennt selbstständig ob es über die Desktopverknüpfung (Normalstart) gestartet wurde oder ob es direkt angeklickt wurde (Setupstart).
Der ping-Befehl wurde durch ipconfig-Befehl ersetzt.
Führt dieser nicht zum freigegebenen Ordner "/telefax" wird zur der Benutzer zur Eingabe der ip-Adresse der Fritz Box aufgefordert.
Diese wird auf ihre Gültigkeit geprüft und in der Registry hinterlegt.
Im Fritz!Fax Anwendungsordner befindet sich ein Backup des Faxjournals und eine Datei Backup.cmd, mit der die Datenbank (Faxjournal) wiederhergestellt werden kann. Das Backup kann mit Fritz!Fax:
...Jornalanzeige ...Archiv anzeigen vorher angeschaut werden.​



Weiter mit dem 1. Post


Seit geraumer Zeit speichert mein altes Fax-Speicher-Modem und seit neustem die Fritz!Box fon W-lan 7x70 meine Faxe, die ich erhalte, wenn der PC ausgeschaltet ist.

Genervt hat mich dabei immer, das die Faxe die man aus dem Modemspeicher später mit dem PC ausliest nie dort waren wo sie hingehören: Da wo auch die gesendeten Faxe sind nämlich in der Windows Faxkonsole.

Sorry, natürlich wäre es auch gut, wenn sich die empfangenen Faxe von dem an der Fritz Box angeschlossenen Usb-Speicher in den Fritz-Fax-Ordner importieren lassen würden, um sie mit Fritz-Fax für Fritz Box anzuzeigen.

Mit meinen bescheidenen DOS-Kenntnissen habe ich versucht eine Lösung zu finden, und habe folgende batch geschrieben (ging nicht ohne zu googlen und abzukupfern).

Auf meinem Win XP Computer habe den download der Faxe vom Usb-Speicher der Fritz Box und anschließende Anzeige der empfangenen Faxe in der Windows Faxkonsole hinbekommen.
Bei Fritz Fax hat bisher nur der Import und das Anzeigen der Faxe vom USB-Speicher mit Fritz!view geklappt.

Und so gehts:

Zur Konvertierung der Faxe von Pdf zu Tif wird das folgende freeware-Programm benötigt:
Irfan View in der Version 4.10
Irfan View benötigt ein Pdf-Plug-Inn und möchte:
GhostScript in der Version 8.54

Zur Konvertierung von tif zu sff wird die folgende Datei benötigt:
TIFF2SFF.EXE aus folgendem Zipp-Archiv
http://www.shamrock.de/cgi-bin/download.pl?faxtools.zip


Bitte vorher Daten sichern.
Sicherheitshalber habe ich unten den Löschbefehl in folgender Zeile durch rem deaktiviert
rem rmdir /s /q "%UV2%"
Die Untenstehenden set-Variablen sind den eigenen Pfaden entsprechend anzupassen.

Code:
::Faximport.bat


@echo off & setlocal
set "faxport=b:\telefax"
set "frifax=%userprofile%\Anwendungsdaten\FRITZ!\Fax"
set "msfax=%userprofile%\Eigene Dateien\fax\inbox"
set "faxtools=%userprofile%\helpers"
set "UV=%faxport%\old"
set "UV2=%userprofile%\Anwendungsdaten\FRITZ!\Fax\fbfx"
set "UV3=temp" ::Bitte nicht ändern
set "UV4=%userprofile%\Anwendungsdaten\FRITZ!\Fax\fbfx\temp"

:: Neue Faxe auf USB-Netzwerkspeicher durch umbenennen isolieren.
ren "%faxport%\*.pdf" *.fbf

:: Temporären Ordner fbx im Lokalen Fritz Fax Anwendungsverzeichnis erstellen.
if not exist "%~dp1%UV2%" md "%~dp1%UV2%"

:: Neue Faxe als Pdf in Ordner fbx kopieren.
copy "%faxport%\*.fbf" "%UV2%\*.pdf"

:: Ordner old auf USB-Netzwerkspeicher, ggf. erstellen und neue Faxe dort als Pdf ablegen.
if not exist "%~dp1%UV%" md "%~dp1%UV%"
move "%faxport%\*.fbf" "%UV%"
ren "%UV%\*.fbf" *.pdf

::Wechsel des Arbeitsortes
c:
cd\
cd "%userprofile%"
cd "%UV2%"
pushd %2
for /F "delims=" %%f in  ('dir /b /a-d %1 ^2^>nul') do if /i %%~sf NEQ %~s0 call :loop "%%f"
PopD

:convert
::Schreibschutz auf die Inbox-Fax-Dateien der Windows Faxkonsole legen
attrib +r "%msfax%\*.tif"

::Wechsel des Arbeitsortes
c:
cd\
cd "%userprofile%"
cd "%UV2%"
::Programmaufruf von Irvan View zur Konvertierung Pdf zu tif
C:\Programme\IrfanView\i_view32.exe "%UV4%\*.pdf" /silent /resize=(1728) /aspectratio /tifc=3 /dpi=(204,196) /convert="%UV4%\*.tif"

::Faxe im tif-format im Ordner Inbox der Windows Faxkonsole ablegen 
copy "%UV4%\*.tif" "%msfax%\*.tif"
::Schreibschutz von den Inbox-Fax-Dateien der Windows Faxkonsole wieder entfernen.
attrib -r "%msfax%\*.tif"

::Wechsel des Arbeitsortes
c:
cd\
cd "%userprofile%"
cd "Anwend~1\FRITZ!\Fax\fbfx\temp"
::Schreiben der Namen aller tif-Dateien im aktuellen Verzeichnis in eine neue Textdatei.
dir /b "%UV4%\*.tif" >"%UV4%\list.txt"
::Aufruf des Tools TIFF2SFF zur Konvertierung tif zu sff in das Lokale Fritz Fax Anwendungsverzeichnis. 
FOR /F "tokens=1" %%f IN (list.txt) DO "%faxtools%\TIFF2SFF.EXE" %%f
copy "%UV4%\*.sff" "%frifax%\*.sff"
::Löschen von fbfx des temporären Unterverzeichnisses 
cd "%frifax%"
rem rmdir /s /q "%UV2%"

::Aufruf der Windows Faxkonsole
%systemRoot%\system32\fxsclnt.exe /new
pause
::Aufruf des Programms Fritz Fax. 
C:\Programme\FRITZ!\FriFax32.exe

goto :eof

:loop
::Für die Windows Faxkonsole werden die Faxe umbenannt.
::Hierzu wird ihr Erstellungsdatum ausgelesen und in den Dateinamen geschrieben.
::Datei: %1 Dateidatum: %~t1
::MyDateTime im Format JJJJ-MM-TT_hh.mm
for /f "tokens=1-5 delims=.: " %%i in ("%~t1") do set MyDateTime=%%kc%%jc%%ic%%l%%m
::Dir %UV3% (="temp") erstellen
if not exist "%~dp1%UV3%" md "%~dp1%UV3%"
::Datei dorthin kopieren
copy "%~f1" "%~dp1%UV3%\%MyDateTime%%~x1"

goto :eof
 

Anhänge

  • Faximport.txt
    2.7 KB · Aufrufe: 245
  • NasToFax4Box-1-5.zip
    7 KB · Aufrufe: 306
Zuletzt bearbeitet:
Faxe von Usb-Speicher zu Fax4Box

Ich hab seit dem letzten Beitrag mit der Batch-Programmierung weitergemacht.
Ich denke der Zugriff auf die FritzFax Datenbank (Journal) wird bald klappen.
"Offline-Faxe" lassen sich dann auch mit Fritz Fax anzeigen.

Gibts eigentlich Interesse an dem vollständigen Code?
 
Stand der Dinge

Zur Zeit funktioniert der Import von Faxen aus dem USB-Speicher leider noch sehr wackelig.
Im Fritzfax Anwendungsverzeichnis befindet sich neben gesendeten und empfangenen Faxen mit der Dateiendung "sff" eine Datei mit dem Namen FritzFax.Dbf. Dieses ist eine Datenbank und beinhaltet das Faxjournal.
MSDOS ist sehr eingeschränkt im Schreibzugriff auf Datenbanken. Trotzdem ist des mir gelungen Datensätze an diese Datenbank anzuhängen.
Leider wird im sogenannten Header am Anfang der Datenbank die Anzahl der Datensätze und das Datum des letzten Eintrages im Hexadezimalformat hinterlegt. Auch dieses lässt sich mittlerweile aus der Stapelverarbeitung patchen. Das Problem liegt dummerweise im ermitteln der Datensatzanzahl in der Datenbank. Wird hier nicht richtig ausgezählt wird die falsche Datensatzanzahl in den Header geschrieben. Ist die Tatsächliche Anzahl der Datenbankeinträge geringer gibt FritzFax eine Fehlermeldung, das die Datenbank beschädigt sei aus. Ist die tatsächliche Datensatzanzahl höher öffnet Fritz Fax normal und überzählige Datensätze werden abgeschnitten.
Leider kann MS-DOS selber nicht zählen. Mit sog. Zählschleifen ist es wenigsten möglich die Anzahl der Faxe im Faxordner zu zählen. Leider weicht die noch zu häufig von der Anzahl der Datensätze ab.

MFG
 
Hallo,

Hatte dir schon mal ne PN geschickt, aber da du
keine hilfe willst, kann ich dir wohl nicht helfen :confused:
wenn du das hier kennst:
http://www.ip-phone-forum.de/showthread.php?t=149015
dann wüstest du das es nicht einfach ist was die Datenbank
FritzFax.Dbf angeht, das mi dem anhengen ist ganz leicht
wenn man sich ein bisschen auskennt.

Du brauchst aber eine Programmiersprache für Dos
wenn du es so machen willst, so'n commandozeilen Compiler
habe ich aber es erfortert viel zeit für Datenbank
Programmierung für DBase 3Plus/IV.

Gruß Erwin
 
Antwort für Pikachu

Hallo Pikachu,
Hilfe wäre gut.
Wie lässt sich denn so etwas aus einer datenbanktauglichen Programmiersprache in die Stapelverarbeitung bringen? Willst Du eine ".exe" compilieren?
 
Hallo,

Das ist nicht so einfach, denn es gibt
das Problem dass du deine Datensätze
von der Datenbank FritzFax.Dbf vom Stick
zu der Datenbank FritzFax.Dbf auf der Festplatte
hinzufügen musst, aber du musst noch den
Dateinamen und Pfad darin ändern dass es geht.
Und man muss dann noch die Doppelten Datensätze löschen.

Hier per Anhang noch mal das Programm von
oben, aber mit einer kleinen Änderung,
die Dateiendung wird in sff umbenannt wenn
man den hacken bei der Checkbox setzt.

Gruß Erwin

PS: per Anhang noch mal eine Testversion:
Fritz!Fax_DBF_Tool_01_03.exe.zip
damit kann man eine Datenbank Anhängen,
aber es werden noch nicht die Doppelten
Datensätze gelöscht, deshalb Bitte nur zum
Testen benutzen, und vorher die FritzFax.dbf
Sichern.

Habe zwei Versionen gelöscht:
Fritz!Fax_DBF_Tool_01_02.exe.zip 44,0 KB, 15x heruntergeladen
Fritz!Fax_DBF_Tool_01_03.exe.zip 44,4 KB, 8x heruntergeladen

Weil diese hier sowieso alles von den Vorversionen drin hat:

Fritz!Fax_DBF_Tool_01_04.exe.zip ->
-> Dateiendung wird in sff umbenannt
-> Datenbank Anhängen
-> Doppelte Datensätze Löschen.
 

Anhänge

  • Fritz!Fax_DBF_Tool_01_04.exe.zip
    45.4 KB · Aufrufe: 3,995
Zuletzt bearbeitet:
Zur Konvertierung der Faxe von Pdf

GhostScript in der Version 8.54

Hallo,

Habe mal nach einiges gesucht und habe dabei entdeckt
dass GhostScript direkt von Pdf zu sff wandeln kann,
somit kannst du dir den Umweg über tif sparen.


Gruß Erwin
 
Antwort an Pikachu

Zitat von Pikachu
Habe mal nach einiges gesucht und habe dabei entdeckt
dass GhostScript direkt von Pdf zu sff wandeln kann,
somit kannst du dir den Umweg über tif sparen.
:
Hallo Pikachu,
eine direkte Umwandlung von Pdf zu sff würde den Konvertierungsablauf erheblich schneller machen. Die Frage ist nur ob Ghostscript über MS-Dos Kommandozeile ansprechbar ist. Wäre gut wenn du dazu etwas herausbekommen könntest.
Zu deinen Tools hab ich noch die Frage mit welcher Programmiersprache die geschrieben sind.

Im Anhang habe ich die Batch zum testen hinterlegt.
Fals die Datenbank wegen fehlerhafter Datensatzanzahl nicht aufgeht kannst du das ja mit deinem Tool leicht wieder beheben.
 

Anhänge

  • batchFritzFax.zip
    3.4 KB · Aufrufe: 144
Zitat von Pikachu :
Die Frage ist nur ob Ghostscript über MS-Dos Kommandozeile ansprechbar ist.

Ja, das ist kein Problem und Funktioniert auch,
aber das ist nicht die Lösung die ich suche,
denn es wäre besser ein kleines Tool zu haben
das die gsdll32.dll mitbenutzt und alles auf einmal
kopiert konvertiert umbennent usw. als viele tools und
batch dateien wo man schnell mal den überblick verliert,
aber es lässt sich nicht's erstellen, wenn keiner mithilft,
und einem einige Informationen mitteilt die noch fehlen
um so etwas zu machen, das mit Ghostscipt, klappt
vielleicht, wenn ich Glück habe, aber dazu braucht man
auch mal einen Tester, denn es nützt nicht's wenn es bei mir
geht und woanders nicht.

Gruß Erwin
 
Fertig!?

Hallo Ihr,
die Probleme die ich mit der FritzFax Datenbank hatte sind nun doch gelöst.

Für all die den neuen automatischen Faximport vom USB-Speicher probieren wollen habe ich eine Zip-Datei im Anhang bereit gestellt.
Bitte die readme.txt, die dabei ist lesen.

Bitte Erfahrungen damit im Forum posten.

MFG
terestus
 

Anhänge

  • NAS_Fax4Box.zip
    4.3 KB · Aufrufe: 237
Zuletzt bearbeitet:
Monolog

Hallo,
nach Test mit einem anderen Computer musste ich noch die Pfadangabe wo sich die Faxe befinden aus dem zu schreibenden Datensatz herausnehmen. Die Datensatzlänge änderte sich unzulässig.
FritzFax braucht die auch Angabe auch garnicht.
Läuft nun stabil.
 

Anhänge

  • NasToFax4Box.zip
    4.7 KB · Aufrufe: 175
Faxe vom USB-Netzwerkspeicher zu Fritz!Fax for Fritz-Box

Hallo ihr Fritz-Boxer,

ich hab mir über die Benutzerfreundlichkeit der Geschichte mal Gedanken gemacht. Meines Wissens ist es nur mit einer Ghostscript-Version mit abgeändertem "Makefile" möglich ein Pdf in ein Sff-File zu konvertieren.
Unter dem Namen gs854w32_cfax.zip habe ich soetwas im Internet gefunden.
Dieser Ghostscriptversion wurde der CFax-Treiber von Capifax hinzugefügt.
Ich weiß im Moment nicht wie das gemacht wurde, ist vielleicht auch erstmal egal. Die Zip-Datei enthält eine normale setup.exe zur Installation von Ghostscript. Mehr braucht man dann nicht zu tun.

Das Transportscript für die Faxe (NasToFax4Box.bat) habe ich soweit geändert, das es nur einmal angeklickt werden muss.
Zur Benutzung wird automatisch ein Desktop-Ikon angelegt über das die Faxe im Hintergrund abgerufen werden und nach Fritz-Fax importiert werden, bevor Fritz-Fax gestartet wird.
Schon der 2. Start läuft Dank Scripting Host ohne schwarzes Konsolenfenster ab.

Die nötigen lokalen Pfade soll das Script sich selber aus der Registry holen.
Die Netzwerkpfade der Fritz-Box sollen über Ping-Befehl und Net View-Befehl geholt werden.

Das funktioniert soweit bei mir gut, aber ich hab keine Ahnung wie auf anderen Fritz-Boxen der Netzwerkpfad zum Ordner Telefax heißt.

Bei mir ist es: \\192.168.178.1\USBFlashDisk-0-1\telefax

Angeschlossen ist ein USB-Stick.

Ich wäre dankbar wenn mir möglicht viele Leute Ihren Pfad posten könnten.

Mfg

Terestus
 
Zuletzt bearbeitet:
Scriptcode und gs854w32_cfax.zip

Cfax enabled Ghostscript 854 kann unter folgendem Link downgeloaded werden.

http://sourceforge.net/project/showfiles.php?group_id=70798&package_id=209533&release_id=459425

Das Faxtransportscript sieht wie folgt aus.


Code:
:: Sriptname: NasToFax4Box.bat

::18.05.2008
:: Netzwerk-Transportscript für Faxe eines an der Fritz!Box angeschlossenen USB-Speichers ins Fritz!Fax Programm.

@echo off & setlocal

:: Programmpfade aus der Registry lesen und an Variablen übergeben.
START /W REGEDIT /E %temp%\FaxPfade.reg "HKEY_CURRENT_USER\Software\AVM\Fritz! 2.0\FRITZ!"
FOR /F "tokens=1* delims==" %%i IN ('Type %temp%\FaxPfade.reg ^| FIND /I "FritzIp"') DO SET FritzIp=%%~j
FOR /F "tokens=1* delims==" %%i IN ('Type %temp%\FaxPfade.reg ^| FIND /I "SystemDir"') DO SET "SystemDir=%%~fj"
START /W REGEDIT /E %temp%\FaxPfade.reg "HKEY_CURRENT_USER\Software\AVM\Fritz! 2.0\Fax" 
FOR /F "tokens=1* delims==" %%i IN ('Type %temp%\FaxPfade.reg ^| FIND /I "DatenDir"') DO SET "DatenDir=%%~fj"
START /W REGEDIT /E %temp%\FaxPfade.reg "HKEY_LOCAL_MACHINE\SOFTWARE\AFPL Ghostscript\8.54"
FOR /F "tokens=1* delims==" %%i IN ('Type %temp%\FaxPfade.reg ^| FIND /I "GS_DLL"') DO SET "GS_DLL=%%~dpj" 

:: Abschneiden von möglichen \-Zeichen am Ende der Pfadangaben in den Variablen.
if "%SystemDir:~0,-1%\" == "%SystemDir%" set "SystemDir=%SystemDir:~0,-1%"
if "%DatenDir:~0,-1%\" == "%DatenDir%" set "DatenDir=%DatenDir:~0,-1%"
if "%GS_DLL:~0,-1%\" == "%GS_DLL%" set "GS_DLL=%GS_DLL:~0,-1%"

:: Prüfung ob das Transportscript über u.g. Vb-Script gestartet wurde (unsichtbarer Modus), wenn nicht wird Setup gestartet. 
if not "%cd%" == "%systemroot%" set FritzIp=192.168.178.1& goto :SetUp

:: Netzwerkfreigabe der Fritz Box mit net view ermitteln, Pfad mit Ordner ../Telefax ergänzen und an Variable übergeben.
for /f "tokens=1" %%i in ('net view \\%FritzIp% ^|FIND /I "-0-1"') do set "NAS=\\%FritzIp%\%%i\telefax"
goto :NoSetUp


:SetUp
:: Transportscript kopiert sich in den Fritz Fax Programmordner.
copy /y NasToFax4Box.bat %SystemDir%\NasToFax4Box.bat

:FindShare
:: Netzwerkfreigabe der Fritz Box mit net view ermitteln, Pfad um Telefax-Ordner ergänzen, an Variable übergeben.
for /f "tokens=1" %%i in ('net view \\%FritzIp% ^|FIND /I "-0-1"') do set "NAS=\\%FritzIp%\%%i\telefax"

:: Pfadkontrolle
set "Pfadfehler=cls & echo. & echo. & echo Folgender Pfad konnte nicht gefunden werden:& echo. & echo."
if not exist  "%NAS%" %PfadFehler% Fritz!Box bzw. freigegebener Ordner Telefax & echo. & pause & goto :NoIp
if not exist  "%SystemDir%" %PfadFehler% Programm Fritz!Fax & echo. & echo Installieren Sie bitte Fritz!Fax. & echo. & pause
if not exist  "%DatenDir%" %PfadFehler% Ordner gesendete Faxe & echo. & echo Installieren Sie bitte Fritz!Fax. & echo. & pause
if not exist  "%GS_DLL%" %PfadFehler% Programm GS & echo. & echo Installieren Sie bitte Ghost Script 8.54 (cfax enabled). & echo. & pause

:: Aktuelle IP-Adresse der Fritz!Box richtig erkannt! Adresse in Registry schreiben.
if exist %temp%\FaxPfade.reg del %temp%\FaxPfade.reg
echo REGEDIT4 >>%temp%\FaxPfade.reg & echo. >> %temp%\FaxPfade.reg
echo [HKEY_CURRENT_USER\Software\AVM\Fritz! 2.0\FRITZ!] >>%temp%\FaxPfade.reg
echo "FritzIp"="%FritzIp%" >> %temp%\FaxPfade.reg & regedit /s %temp%\FaxPfade.reg & del %temp%\FaxPfade.reg
goto :NoSetUp

:NoIp
:: Beispiel IP-Adresse mit ipconfig ermitteln. Eingabeaufforderung IP-Adresse.
for /f "tokens=12" %%i in ('ipconfig/all^|findstr "Standardgateway"') do set "BeispielIp=%%i"
cls&echo.&echo.                                  Beispiel:-%BeispielIp%&echo.
SET /P FritzIp=Bitte die IP-Adresse der Fritz!Box angeben:-
goto :FindShare

:NoSetUp
:: Erstellung eines VB-Script für unsichtbaren Start des Transportscripts (NasToFax4Box.bat) und einer Desktopverknüpung dazu.
if exist %SystemDir%\NasToFax4Box.vbs del %SystemDir%\NasToFax4Box.vbs
echo Set WshShell = WScript.CreateObject("WScript.Shell")>>%SystemDir%\NasToFax4Box.vbs
echo desktopdir = WshShell.SpecialFolders(0)>>%SystemDir%\NasToFax4Box.vbs
echo neuerlink = desktopdir ^& "\NasToFax4Box.lnk">>%SystemDir%\NasToFax4Box.vbs
echo set link = WshShell.Createshortcut(neuerlink)>>%SystemDir%\NasToFax4Box.vbs
echo link.TargetPath = "%SystemDir%\NasToFax4Box.vbs">>%SystemDir%\NasToFax4Box.vbs
echo link.IconLocation = "%SystemDir%\fboxset.exe,0">>%SystemDir%\NasToFax4Box.vbs
echo link.Save>>%SystemDir%\NasToFax4Box.vbs
"%SystemDir%\NasToFax4Box.vbs"
echo WshShell.CurrentDirectory = WshShell.ExpandEnvironmentStrings("%systemroot%")>>%SystemDir%\NasToFax4Box.vbs
echo Return = WshShell.Run("%SystemDir%\NasToFax4Box.bat", 0, True)>>%SystemDir%\NasToFax4Box.vbs
echo Set WshShell = Nothing>>%SystemDir%\NasToFax4Box.vbs

:: Mögliche alte Fehlerfaxe auf USB-Netzwerkspeicher durch umbenennen isolieren.
if exist %NAS%\error*.pdf ren %NAS%\error*.pdf *.error

:: Wenn keine neuen Faxe vorhanden sind wird FritzFax schon jetzt gestartet.
if not exist "%NAS%\*.pdf" goto :StartFF

:: OS Version prüfen
set "w2k="
set /a "mge=9"
for /F "usebackq delims==" %%i IN (`ver`) DO (set OSVersion=%%i)
@ECHO %OSVersion% | find "Microsoft Windows 2000" >NUL:
IF %ERRORLEVEL% NEQ 1 set /a w2k=20 & set /a mge=1

:: Neue Faxe auf USB-Netzwerkspeicher durch umbenennen auswählen bis maximale Anzahl (mge) erreicht ist.
set /a FxAnz=0
for /f %%f in  ('dir /b /a-d "%NAS%\*.pdf" ^2^>nul') do copy %NAS%\%%f  %NAS%\%%~nf.fbf & del %NAS%\%%f & call :FxZähler
goto :Auswahl
:FxZähler
set /a FxAnz=%FxAnz%+1
if /I %FxAnz% GTR %mge% goto :exitL
goto :eof
:exitL
if exist "%NAS%\*.pdf" ren "%NAS%\*.pdf" *.pdf_ 
goto :eof
:Auswahl
if exist "%NAS%\*.pdf_" ren "%NAS%\*.pdf_" *.pdf

:: Temporären Ordner fbx im Lokalen Fritz Fax Anwendungsverzeichnis erstellen.
set "fbfx=%DatenDir%\fbfx"
if not exist "%fbfx%" md "%fbfx%"

:: Ausgewählte neue Faxe als Pdf in Ordner fbx kopieren. | Dateiliste auf Merkzettel listPdf.txt schreiben
if exist "%NAS%\*.fbf" copy "%NAS%\*.fbf" "%fbfx%\*.pdf"
dir /n "%fbfx%\*.pdf" >"%DatenDir%\listPdf.txt"

:: Ordner old auf USB-Netzwerkspeicher, ggf. erstellen und die ausgewählten Faxe dort als Pdf ablegen (Sicherungskopie).
set "old=%NAS%\old"
if not exist "%old%" md "%old%"
copy /y "%NAS%\*.fbf" "%old%\*.pdf"
if exist "%NAS%\*.fbf" del %NAS%\*.fbf"

:: Die neuen ausgewählten Pdf-Faxe bekommen einen vorläufigen Kompatiblen 15-Stelligen Dateinamen.
:: Hierzu wird ihr Erstellungsdatum ausgelesen und in den Dateinamen geschrieben.
cd /d "%fbfx%"
pushd %2
for /F "delims=" %%f in  ('dir /b /a-d %1 ^2^>nul') do if /i %%~sf NEQ %~s0 call :DateToName "%%f"
PopD
goto :GhostScript

:DateToName
:: Datei: %%i Dateidatum: %~t1 | MyDateTime im Format JJJJ-MM-TT_hh.mm
for /f "tokens=1-5 delims=.: " %%i in ("%~t1") do set MyDateTime=%w2k%%%kc%%jc%%ic%%l%%m
ren "%~f1" "%MyDateTime%%~x1"
goto :eof

:GhostScript
:: Konvertierung der Pdf-Faxe im Unterordener (...Fax\fbfx) zu SFF-Faxen im Lokalen Fritz-Fax Anwendungsverzeichniss (...\Fax)
cd /d "%fbfx%"
pushd
for %%i in ("*.pdf") do "%GS_DLL%\gswin32c.exe" -dNOPAUSE -dBATCH -sDEVICE=cfax -sOutputFile="%DatenDir%\%%~ni.sff" %%i
PopD

:: Fehlerkontrolle (mit Merkzettel listPdf.txt) nach Konvertierung
cd %DatenDir%
FOR /f "tokens=1,2,3,4,5,6,7,* skip=5 delims=.:*eol= " %%i IN (listPdf.txt) DO set "ErrorPdf=%%p" & set "SffFax=%DatenDir%\%%kc%%jc%%ic%%l%%m.sff" & call :PdfBack
goto :DelFbfx

:PdfBack
:: Nicht nach Sff konvertierbare Dateien werden als Pdf zurückkopiert.
if not exist "%SffFax%" copy "%old%\%ErrorPdf%" "%NAS%\Error%ErrorPdf%"

:: Fehlermeldung in VB-Script-Datei ablegen für späteren Aufruf.
if exist %temp%\FaxError.vbs goto :next
echo Option Explicit>>%temp%\FaxError.vbs
echo Dim WshShell, Fso>>%temp%\FaxError.vbs
echo MsgBox "Bitte entfernen Sie nicht konvertierbare Faxe aus dem Usb-Netzwerkspeicher!", vbInformation, "Faxe im Netzwerkspeicher !">>%temp%\FaxError.vbs
echo WScript.Quit()>>%temp%\FaxError.vbs
:next
goto :eof

:DelFbfx
::Löschen des temporären Unterverzeichnisses (...\Fax\fbfx) (...\Fax).
if exist "%DatenDir%\listPdf.txt" del "%DatenDir%\listPdf.txt"
if exist "%fbfx%\listTif.txt" del "%fbfx%\listTif.txt"
if exist "%fbfx%\*.pdf" del "%fbfx%\*.pdf"
if exist "%fbfx%\*.tif" del "%fbfx%\*.tif"
if exist "%fbfx%" rmdir /s /q "%fbfx%"

:: Leere Variable für Datenbank-Datensatz und Anzahl erstellen.
set dbline=
set /a dblAnz=0

:: Neue Sff-Faxe werden anhand ihres längeren Dateinamens erkannt. Der Faxname wird in eine Variable "FILE.SFF" gegeben.
for /F "delims=" %%f in  ('dir /b /a-d "%DatenDir%\????C??C??C????.sff" ^2^>nul') do if /i %%~sf NEQ %~s0 set "FILE.SFF=%%f" & call :loopdbf "%%f"
if "%dbline%" == "" goto :StartFF

:: Eine Datensicherung der Datenbank wird erstellt. Diese bleibt nur am aktuellen Tag erhalten. 
if not exist "%DatenDir%\BackUp.dbf" copy "%DatenDir%\FritzFax.dbf" "%DatenDir%\BackUp.dbf"
if not exist "%DatenDir%\BackUp.dbk" copy "%DatenDir%\FritzFax.dbk" "%DatenDir%\BackUp.dbk"
if not exist "%DatenDir%\BackUp.mdx" copy "%DatenDir%\FritzFax.mdx" "%DatenDir%\BackUp.mdx"
XCOPY "%DatenDir%\FritzFax.*" "%DatenDir%\BackUp.*" /D:%date:~3,2%-%date:~0,2%-%date:~-4% /L/Y>>%temp%\Exclude.txt
XCopy "%DatenDir%\FritzFax.*" "%DatenDir%\BackUp.*" /Y /Exclude:%temp%\Exclude.txt & del %temp%\Exclude.txt

:: Neue Datensätze werden in Datenbank geschrieben. 
echo %dbline% >>"%DatenDir%\FritzFax.dbf"
goto :Zähler

:loopdbf
:: Für jede Sff-Datei wird die Variable FILE.SFF zerteilt und die Stücke in neue Variablen geschrieben. Weitere Variablen bekommen Standardinhalt.
set "JAHR=%FILE.SFF:~2,-15%"
set "MONAT=%FILE.SFF:~5,2%"
set "TAG=%FILE.SFF:~8,2%"
set "DATUM=20%JAHR%%MONAT%%TAG%"
set "STUNDEN=%FILE.SFF:~11,2%"
set "MINUTEN=%FILE.SFF:~13,2%"
set "SEKUNDEN=59"
set "ZEIT=%FILE.SFF:~11,4%5959"
set "RUFNUMMER=000000000000"
set "RECEIVEID=Fax"
set "BEZCHNG= "
set "MYNUMBER=1234567"
set "DATEI=%MONAT%%TAG%%STUNDEN%%MINUTEN%.sff"
set "KOMMENTAR= "
set "PAGES=1"
set "FAXRES=196"
set "STATUS=a"
set "LOESCHEN= "
set "ERROR=10000/aus Netzwerkspeicher"
set "FAXSPEED=14400"
set "FAXDATUM=%TAG%.%MONAT%.20%JAHR%"
set "FAXSTART=%STUNDEN%:%MINUTEN%:%SEKUNDEN%"
set "FAXDAUER=50"
set "SENDTIME= "
set "SENDTRY= "
set "GEBUEHREN=0.060000"
set "GEBUEHRSTR=0,00 ¤"
set "MODE=2"
:: Der Dateiname der Faxe wird auf kurz-Datum und Uhrzeit gekürzt. Wenn schon so eine Datei mit gleichem Namen existiert wird diese gelöscht
if exist "%DatenDir%\%MONAT%%TAG%%STUNDEN%%MINUTEN%.sff" del "%DatenDir%\%MONAT%%TAG%%STUNDEN%%MINUTEN%.sff"
ren "%DatenDir%\20%JAHR%C%MONAT%C%TAG%C%STUNDEN%%MINUTEN%.sff" "%MONAT%%TAG%%STUNDEN%%MINUTEN%.sff"
::Datenbank wird nach dem Faxdateinamen durchsucht. Wenn er noch nicht  vorhanden ist wird ein neuer Datensatz in die Variable dbline gegeben.
findstr "%MONAT%%TAG%%STUNDEN%%MINUTEN%.sff" "%DatenDir%\FritzFax.dbf"
if not errorlevel 1 goto :eof
:: Achtung Datensatz für Datenbank! Bitte kein Zeichen ändern.
::_______________________________________________________________________________________
set dbline=%dbline% %DATUM%%ZEIT%%RUFNUMMER%                                                    %RECEIVEID%                                                             %MYNUMBER%                                                         %DATEI%                                                                                                                                                                                                                                                                          %BEZCHNG%                                                       %PAGES%   %FAXRES% %STATUS%%ERROR%                                                            %FAXSPEED%%FAXDATUM%%FAXSTART%%FAXDAUER%                     %GEBUEHREN%  %GEBUEHRSTR%      %MODE%     
::_______________________________________________________________________________________

:: Zählen der neu zu schreibenden Datensätze 
set /a dblAnz=%dblAnz%+1
goto :eof

:Zähler
cd /d "%DatenDir%
:: Datensatzanzahl aus Datenbankheader auslesen um diese zu erhöhen
::Dazu wird eine Texdatei als Dummi-Datenbank erstellt und von beiden die erste Zeile verglichen.
::Das Ergebnis wird in einer Textdatei in Token zerlegt. Die Datensatzanzahl im Hexadezimalformat wird an eine Variable übergeben.
::Achtung! Datenbank-Header-Abschnitt nicht verändern!___________________
echo îîîî>>dbanz0.tmp
::_____________________________________________________________
echo n | comp /n=1 dbanz0.tmp FritzFax.dbf>>dbanz.tmp
del dbanz0.tmp
FOR /F "skip=15 tokens=2 delims=A=" %%f IN (dbanz.tmp) do set dbhexanz=%%f
del dbanz.tmp
set /a dbdecanz=0x%dbhexanz%

:: Überzähliges Leerzeichen aus Variable kürzen
set dbhexanz=%dbhexanz:~1,2%

:: Umrechnung der Datensatzanzahl Hexadezimal zu Dezimal
set /a dbdecanz=0x%dbhexanz%

:: Datensatzanzahl um neue Datensätze erhöhen
set/a dec=%dbdecanz%+%dblAnz%

:: Anzahl von dezimal zu hexadezimal umrechnen
set /a h1=%dec%/16
set /a h2=%dec%-%h1%*16
if %h1% geq 10 call :Kalk %h1%
if %h1% geq 10 set h1=%h%
if %h2% geq 10 call :Kalk %h2%
if %h2% geq 10 set h2=%h%
set hex=%h1%%h2%
set Anzahl=%hex%

:Datum
::Datum für den Datenbank-Header im hexadezimalformat an Variable "dbtag" geben
set dbdat=%temp%\dbdat.tmp
DATE /T > %dbdat%
for /f "tokens=1 delims=." %%e in (%dbdat%) do set dec=%%e
set /a h1=%dec%/16
set /a h2=%dec%-%h1%*16
if %h1% geq 10 call :Kalk %h1%
if %h1% geq 10 set h1=%h%
if %h2% geq 10 call :Kalk %h2%
if %h2% geq 10 set h2=%h%
set hex=%h1%%h2%
set dbtag=%hex%
goto :dbpatch

:Kalk
::Kleiner Hex-Umrechner 
if %1==15 set h=F
if %1==14 set h=E
if %1==13 set h=D
if %1==12 set h=C
if %1==11 set h=B
if %1==10 set h=A
goto :eof

:dbpatch
:: Eine Textdatei tmp.deb mit Anweisungen wie der Datenbankheader geändert werden soll wird für debug.exe erstellt.
set x=%dbtag%
set y=%Anzahl%
echo %x% %y%
echo n FritzFax.dbf>tmp.deb
echo l cs:0001>>tmp.deb
echo e cs:0001>>tmp.deb
echo 03 6C 03 %x% %y%>>tmp.deb
echo w cs:0001>>tmp.deb
echo q>>tmp.deb
:: MS-DOS Debugger wird aufgerufen/ FritzFax.dbf in den Arbeitspeicher Sector cs:0001 geladen.
:: In den Datenbankheader wird "03 6C 03 %x% %y%" geschrieben. Debugger wird beendet.
debug FritzFax.dbf<tmp.deb

:StartFF
:: FritzFax wird gestartet.
"%SystemDir%\FriFax32.exe"

:: Bei Fehler VB-Script FaxError.vbs anzeigen.
if exist "%NAS%\*.error" ren "%NAS%\*.error" *.pdf & call %temp%\FaxError.vbs

:: Tempdateien löschen
if exist %temp%\FaxPfade.reg del %temp%\FaxPfade.reg
if exist %temp%\FaxError.vbs del %temp%\FaxError.vbs
if exist %temp%\dbdat.tmp del %temp%\dbdat.tmp
if exist "%DatenDir%\tmp.deb" del "%DatenDir%\tmp.deb"


:: Notfall-Script zu Wiederherstellung des Faxjournals wird im Fritz!Fax Anwendungsordner hinterlegt.
if exist "%DatenDir%\backup.cmd" goto :eof
echo @echo off>>"%DatenDir%\backup.cmd"
echo set "DatenDir=%userprofile%\Anwendungsdaten\FRITZ!fax fr FRITZ!Box\Fax">>"%DatenDir%\backup.cmd"
echo echo.>>"%DatenDir%\backup.cmd"
echo echo ***** Das Faxjournal von Fritz!Fax wird mit einem Backup ueberschrieben. *****>>"%DatenDir%\backup.cmd"
echo echo.>>"%DatenDir%\backup.cmd"
echo echo.>>"%DatenDir%\backup.cmd"
echo echo   Bitte ueberpruefen Sie den Inhalt dieses Backups vorher mit Fritz!Fax.>>"%DatenDir%\backup.cmd"
echo echo.>>"%DatenDir%\backup.cmd"
echo echo   Waehlen Sie im Menue ...Jornalanzeige ...Archiv anzeigen aus.>>"%DatenDir%\backup.cmd"
echo echo.>>"%DatenDir%\backup.cmd"
echo echo   Backup erst bestaetigen, wenn Fritz!Fax wieder geschlossen ist.>>"%DatenDir%\backup.cmd"
echo echo.>>"%DatenDir%\backup.cmd"
echo echo.>>"%DatenDir%\backup.cmd"
echo echo.>>"%DatenDir%\backup.cmd"
echo xcopy /q "%DatenDir%\BackUp.dbf" "%DatenDir%\FritzFax.dbf">>"%DatenDir%\backup.cmd"
echo pause>>"%DatenDir%\backup.cmd"

Das Faxtransport-Script NasToFax4Box.bat ist im Anhang für angemeldete Forumsbenutzer herunterladbar.

6u58-1.jpg
 

Anhänge

  • Pdf_To_Sff_in_Fax4Box.jpg
    Pdf_To_Sff_in_Fax4Box.jpg
    108.8 KB · Aufrufe: 236
  • NasToFax4Box.zip
    5.2 KB · Aufrufe: 95
Zuletzt bearbeitet:
Hallo Terestus,

dein Script funzt bei mir leider nicht. Kann es sein das es mit dem Pfad des Ordners auf dem USB STick zusammenhängt? Hier mal meiner:

\\fritz.box\USBFlashMemory-Partition-0-1\telefax

FritzFax (Vers. 3.07) ist installiert auf C:\Programme
greift aber auf einen Ordner auf D:\ zu

Das sollt aber kein Problem darstellen, oder?


Habe die angegebene Ghostscript installiert und danach die batch Datei ausgeführt. Es kommt immer folgende wie im Screenshot dargestellte Fehlermeldung. FritzFax wird aber gestartet. Nur ist nichts importiert worden. Das Desktop Icon ist auch vorhanden. Was kann ich tun?

Wäre fein wenn`s funzt, weil eigentlich ist das Tool ideal :nemma:

Grüße und Danke im Voraus

Mikey
 

Anhänge

  • Screenshot.jpg
    Screenshot.jpg
    228.4 KB · Aufrufe: 162
Zuletzt bearbeitet:
So Problem gelöst.

Dieses war das meine FB 7270 keinen Hostnamen im Netzwerk hatte, den Du aber in Deinem Script abfragst um die IP zu ermitteln.

Abhilfe:

in C:\Windows\system32\drivers\etc\hosts

einfach die IP Adresse der FB mit dem entsprechenden Eintrag, hier also fritz.box machen.

Dann funzte das auch sofort mit der Batchdatei.

Ganz tolles Tool. Vielen Dank dafür !!


Grüße

Mikey
 
Hallo MikeyFFB,
schön das du das Problem mit der Namensauflösung deiner Fritz-Box-IP so elegant selbst gelöst hast. Die Abfrage der IP-Adresse der Fritz-Box mit einem Ping-Befehl ist eigentlich nicht smart genug. Ein Ping bleibt ja auch in vielen Firewalls hängen.
Bessere Fehlermeldungen bei nicht gefundenem Pfad werden auf alle Fälle noch eingefügt.
Danke für den Beitrag

terestus
 
Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\AVM\AVMIGDCTRL]
"FoundFritzBoxes"="192.168.178.1"

*LOL* darf man mal Lachen?! :confused:
:lach: :wippe: :bahnhof: :meinemei: :fies: :blonk: :-Ö ich weiß > :doof:

Gruß Erwin
 
Neue Funktionen

Hallo,
wie oben im Programmcode ersichtlich habe ich folgende Änderungen gemacht:

Das Script NASToFax4Box.bat erkennt selbstständig ob es über die Desktopverknüpfung (Normalstart) gestartet wurde oder ob es direkt angeklickt wurde (Setupstart).

Normalstart: (unsichtbarer Modus) die Programmpfade aus der Registry werden verwendet.

Setupstart: (DOS-Konsolenfenster) die Pfade werden zusätzlich auf ihre Gültigkeit überprüft.

Der ping-Befehl wurde durch ipconfig-Befehl ersetzt.
Führt dieser nicht zum freigegebenen Ordner "/telefax" wird zur der Benutzer zur Eingabe der ip-Adresse der Fritz Box aufgefordert.
Diese wird auf ihre Gültigkeit geprüft und in der Registry hinterlegt.

Im Fritz!Fax Anwendungsordner befindet sich ein Backup des Faxjournals und eine Datei Backup.cmd, mit der die Datenbank (Faxjournal) wiederhergestellt werden kann. Das Backup kann mit Fritz!Fax:
...Jornalanzeige ...Archiv anzeigen vorher angeschaut werden.

mfG

Terestus

PS: Den Registryschlüssel: HKEY_LOCAL_MACHINE\SOFTWARE\AVM\AVMIGDCTRL FoundFritzBoxes"="192.168.178.1" gibt es bei mir nicht. Der gehört zum Fritz!DSL Startcenter. Das ist bei mir nicht installiert worden. Den mitzubenutzen wäre zu fehleranfällig, da dort mehrere Fritz!Boxen eingetragen sein können.
 

Anhänge

  • NasToFax4Box.zip
    5.2 KB · Aufrufe: 94
PS: Den Registryschlüssel: HKEY_LOCAL_MACHINE\SOFTWARE\AVM\AVMIGDCTRL FoundFritzBoxes"="192.168.178.1" gibt es bei mir nicht. Der gehört zum Fritz!DSL Startcenter. Das ist bei mir nicht installiert worden. Den mitzubenutzen wäre zu fehleranfällig, da dort mehrere Fritz!Boxen eingetragen sein können.

Guten Morgen,

erstmal Danke für die bat. funzt einwandfrei. Übrigens ich z.B. habe den Eintrag schon obwohl FRITZ!DSL auch noch nie auf meinem Comp installiert war. Kommt das doch woanders her? Habe FritzVox und eben FritzFax installiert

Grüße

Mikey
 

Neueste Beiträge

Statistik des Forums

Themen
244,695
Beiträge
2,216,688
Mitglieder
371,314
Neuestes Mitglied
Gjorstn
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.