Zitat
Der schmeißt mir gar nichts raus wenn ich das in eine FileWrite packe.
Zitat
Der schmeißt mir gar nichts raus wenn ich das in eine FileWrite packe.
Der schmeißt mir gar nichts raus wenn ich das in eine FileWrite packe.
Ich geh mal davon aus das du den Returnwert von den Mac-Funktionen in die FileWrite geschrieben hast.
Das darfst du nicht. Es sind Arrays und keine Strings.
Schau mal Hingo, das hier dürfte die einfachste Möglichkeit sein, Deine Textdatei zu erstellen.
Da Du in Deinem Beitrag Nr. 21 nicht erwähnt hast, welche Methode Du von den Beispielen verwendet hast, ist eine Hilfe um Dich auf den Punkt zu heben schwierig. Daher nutze ich jetzt mal die Möglichkeit, Dir mit diesem Code die Möglicheiten von FileWrite näher zu bringen und einen Erfolg zu sehen. Man kann das natürlich auch mit puren AutoIt lösen, wie es Dir alpines aufgezeigt hat und im Code von AspirinJunkie verdeutlicht wurde.
#include <Date.au3>
$file1 = @ScriptDir & "\getmac__.txt"
$file2 = @ScriptDir & "\getmac_.txt"
$getmac =@ScriptDir & "\getmac.txt"
FileOpen($file1, 2)
FileWrite($file1," BPCS Checkliste "&@CRLF)
FileWrite($file1,"====================================================="&@CRLF)
FileWrite($file1,""&@CRLF)
FileWrite($file1, "Current Date: " & _NowDate()&@CRLF) ;write Current date in log file
FileWrite($file1, "Current Time: " & _NowTime()&@CRLF) ;write Current time in log file
FileWrite($file1, ""&@CRLF)
FileWrite($file1, "********************Computer Data********************"&@CRLF)
FileWrite($file1, ""&@CRLF)
;~ FileWrite($file1, "Serial number:"&@CRLF)
FileClose($file1)
RunWait(@ComSpec & ' /c ' & 'getmac /V > getmac_.txt' & '"', "", @ScriptDir, @SW_HIDE)
FileOpen($getmac, 2)
FileWrite($getmac, FileRead($file1) & @CRLF & FileRead($file2))
FileClose($file2)
FileClose($getmac)
ShellExecute($getmac)
Alles anzeigen
EDIT: Mit FileDelete($file1) und FileDelete($file2) kannst Du die übrigen Textdateien löschen wenn Du das Beispiel verstanden hast
In deinem RegExp-Pattern ist noch ein Fehler drin...
Die Beschreibung zu meinem Ethernet-Adapter Tunngle lautet:
Beschreibung. . . . . . . . . . . : TAP-Win32 Adapter V9 (Tunngle)
Wegen des [^-] wird aber nur das TAP gefunden...
;-- TIME_STAMP 2017-03-07 05:10:32
#include <array.au3>
Global $aNetAdaptersWMI = _GetMacAddressesWMI()
Global $aNetAdaptersCMD = _GetMacAddressesCMD()
_ArrayConcatenate($aNetAdaptersWMI, $aNetAdaptersCMD)
_ArrayDisplay($aNetAdaptersWMI, '', "", 0, Default, 'Func|NetworkAdapter|MacAddress')
;---------------------------- Funktionen -----------------------------------------------------------
Func _GetMacAddressesWMI()
Local $aReturn[1][3], $bY = False
If IsDeclared("oWMI") <> 1 Then
Local $oWMI = ObjGet("winmgmts:\\localhost\root\CIMV2")
If @error Or Not IsObj($oWMI) Then Return SetError(1, @error, 0)
EndIf
Local $aItems = $oWMI.ExecQuery("SELECT MACAddress, Name FROM Win32_NetworkAdapter " & _
"WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> " & _
"'Microsoft'))", "WQL", 0x10 + 0x20)
If IsObj($aItems) Then
For $x In $aItems
If $bY Then
ReDim $aReturn[UBound($aReturn) + 1][3]
Else
$bY = True
EndIf
$aReturn[UBound($aReturn) - 1][0] = 'WMI'
$aReturn[UBound($aReturn) - 1][1] = $x.Name
$aReturn[UBound($aReturn) - 1][2] = StringReplace($x.MACAddress, ':', '-')
Next
Return $aReturn
Else
Return SetError(2, 0, 0)
EndIf
EndFunc
Func _GetMacAddressesCMD()
$sCMD = _GetDOSReturn("ipconfig", "/all")
$aRegExRet = StringRegExp($sCMD, "(?s)[^-](?:Beschreibung|Description)[\.\s]+?:\s([^\r^\n]+).+?[^0-9A-F-]([0-9A-F]{2}(?:-[0-9A-F]{2}){5})[^-]", 3)
If @error Then
Return SetError(1,@error, '')
Else
Local $aReturn[UBound($aRegExRet)/2][3], $i = 0, $j = 0
While $i < UBound($aRegExRet)
$aReturn[$j][0] = 'CMD'
$aReturn[$j][1] = $aRegExRet[$i]
$aReturn[$j][2] = $aRegExRet[$i+1]
$i += 2
$j += 1
WEnd
Return $aReturn
EndIf
EndFunc
Func _GetDOSReturn($sCMD, $sParameter = '')
Local $sPara = '', $sReturn = '', $sLine
If $sParameter <> '' Then $sPara = ' ' & $sParameter
Local $iPID = Run($sCMD & $sPara, '', @SW_HIDE, 2)
While 1
$sLine = StdoutRead($iPID)
If @error Then ExitLoop
$sReturn &= $sLine
WEnd
Return $sReturn
EndFunc
;------------------------------------------------------------------------------------------------
Alles anzeigen
Warum benutzt ihr eigtl. immer dieses lahme WMI wenn es auch über die WinAPI geht?
-> GetAdaptersInfo function
-> IP_ADAPTER_INFO structure
Sollte ja als Tipp reichen und für den einen oder anderen nicht so schwer sein umzusetzen
Ok, das Beispiel von bazii hilft mir weiter, ich werde mich dann wieder melden wenn ich Hilfe benötige.
Danke an euch allen.
MfG
Hingo
Hallo Hingo,
wenn Du die Umwandlung der PDF (Dein Beitrag Nr. 3) noch nicht oder noch nicht fehlerfrei hinbekommen haben solltest, kannst Du nach dieser Anleitung vorgehen. Ist nicht kompliziert
Das wäre jetzt auch die Antwort auf Deine gestrige PN.
1. MPDF_UDF.au3 (siehe Anhang) in Dein Script-Verzeichnis abspeichern. Das ist nichts weiter als die modifizierte UDF von taietel mit folgender ergänzter Funktion am Ende der UDF.
Func _Iif($fTest, $vTrueVal, $vFalseVal)
If $fTest Then
Return $vTrueVal
Else
Return $vFalseVal
EndIf
EndFunc
2. Führe folgenden Code für Dein Vorhaben aus (siehe Anhang).
#include <Date.au3>
#include <MPDF_UDF.au3>
#include <File.au3>
$file1 = @ScriptDir & "\getmac__.txt"
$file2 = @ScriptDir & "\getmac_.txt"
$getmac =@ScriptDir & "\getmac.txt"
$sF = @ScriptDir & "\getmac.txt"
FileOpen($file1, 2)
FileWrite($file1," BPCS Checkliste "&@CRLF)
FileWrite($file1,"====================================================="&@CRLF)
FileWrite($file1,""&@CRLF)
FileWrite($file1, "Current Date: " & _NowDate()&@CRLF)
FileWrite($file1, "Current Time: " & _NowTime()&@CRLF)
FileWrite($file1, ""&@CRLF)
FileWrite($file1, "********************Computer Data********************"&@CRLF)
FileWrite($file1, ""&@CRLF)
;~ FileWrite($file1, "Serial number:"&@CRLF)
FileClose($file1)
RunWait(@ComSpec & ' /c ' & 'getmac /V > getmac_.txt' & '"', "", @ScriptDir, @SW_HIDE)
FileOpen($getmac, 2)
FileWrite($getmac, FileRead($file1) & @CRLF & FileRead($file2))
FileClose($file2)
FileClose($getmac)
;Einstellungen für die PDF Erstellung
_SetTitle("getmac")
_SetSubject("getmac to pdf")
_SetKeywords("pdf, AutoIt")
_OpenAfter(True);PDF nach erstellung öffnen
_SetUnit($PDF_UNIT_CM)
_SetPaperSize("A4")
_SetZoomMode($PDF_ZOOM_CUSTOM, 90)
_SetOrientation($PDF_ORIENTATION_PORTRAIT)
_SetLayoutMode($PDF_LAYOUT_CONTINOUS)
;initialize the pdf
_InitPDF(@ScriptDir & "\getmac.pdf")
_LoadFontTT("F1", $PDF_FONT_CALIBRI,$PDF_FONT_ITALIC)
_Txt2PDF($sF, "F1")
;write the buffer to disk
_ClosePDFFile()
; #FUNCTION# ====================================================================================================================
; Name ..........: _Txt2PDF
; Description ...: Convert a text file to pdf
; Syntax ........: _Txt2PDF( $sText , $sFontAlias )
; Parameters ....: $sText - file path.
; $sFontAlias - font alias.
; Return values .: None
; Author(s) .....: Mihai Iancu (taietel at yahoo dot com)
; Modified ......:
; Remarks .......: If the string is very long, it will be scaled to paper width
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func _Txt2PDF($sFile, $sFontAlias)
Local $hFile = FileOpen($sFile)
Local $sText = FileRead($hFile)
FileClose($hFile)
Local $iUnit = Ceiling(_GetUnit())
Local $iX = 2
Local $iY = Ceiling(_GetPageHeight() / _GetUnit()) - 1.5
Local $iPagina = Ceiling(_GetPageWidth() / $iUnit) - $iX
Local $iWidth = Ceiling($iPagina - $iX);, 1)
Local $lScale
Local $iRanduri = StringSplit($sText & @CRLF & @CRLF & @CRLF & @CRLF, @CRLF, 3)
Local $iHR = 0.5 * Ceiling($iY / (10 * $iUnit))
Local $iPages = Ceiling((UBound($iRanduri)) * $iHR / $iY)
Local $iNrRanduri = Ceiling(UBound($iRanduri) / $iPages-2)
Local $nrp
For $j = 0 To $iPages + 2
$nrp = _BeginPage()
_DrawText(_GetPageWidth()/_GetUnit()-1, 1, $nrp, "F1", 10, $PDF_ALIGN_CENTER)
For $i = 0 To $iNrRanduri - 1
Local $sLength = Round(_GetTextLength($iRanduri[$i + $j * $iNrRanduri], $sFontAlias, 10))
Local $iH = $iY - $iHR * ($i + 1)
Select
Case $iH < 1
_EndPage()
Case $i + $j * $iNrRanduri = UBound($iRanduri) - 1
_EndPage()
Return
Case $sLength > $iWidth - 1
$lScale = Ceiling($iWidth * 100 / $sLength)
_SetTextHorizontalScaling($lScale)
_DrawText($iX, $iH, $iRanduri[$i + $j * $iNrRanduri], $sFontAlias, 10, $PDF_ALIGN_LEFT, 0)
_SetTextHorizontalScaling(100)
Case Else
_DrawText($iX, $iH, $iRanduri[$i + $j * $iNrRanduri], $sFontAlias, 10, $PDF_ALIGN_LEFT, 0)
EndSelect
Next
_EndPage()
Next
EndFunc ;==>_Txt2PDF
FileDelete($file1)
FileDelete($file2)
Alles anzeigen
In deinem RegExp-Pattern ist noch ein Fehler drin...
Das ist nicht mein RegExp-Pattern aber dennoch vielen Dank für das korrigierte Anwendungsbeispiel.
Da gibt es ein Problem wenn ich das Skript starte schreibt er nichts in die PDF.
Er gibt erst bei dem 2ten mal was aus, wenn die PDF Datei schon einmal erstellt wurde.
MfG
Hingo
Hast Du beide Scripte die ich angehangen habe, unverändert in Dein ScriptDir abgespeichert und dann getmac_pdf.au3 ausgeführt?
Entschuldige Hingo, war mein Fehler. Ich habe den Beitrag 27 und den Anhang jetzt eben mit den richtigen Code versehen. Teste es nochmal.
Immer noch das selbe Problem.
Ich habe den Beitrag 27 und den Anhang jetzt eben nochmal mit den richtigen Code versehen. Teste es nochmal. Jetzt sollte es aber klappen. Ist schwierig wenn man nicht zu Hause am Arbeitsplatz ist.
Jo perfekt jetzt funktioniert es, danke.
Tja gut wenn das der Arbeitsplatz ist
Damit ich den Speicherort ändern kann muss ich doch _InitPDF(@ScriptDir & "\getmac.pdf") und $getmac = @ScriptDir & "\getmac.txt" ändern, oder?
Damit ich den Speicherort ändern kann muss ich doch _InitPDF(@ScriptDir & "\getmac.pdf") und $getmac = @ScriptDir & "\getmac.txt" ändern, oder?
Ich habe Dir noch ein Beispiel erstellt . Vergleiche am besten mal die Skripte. Tip: In Notepad ++ kam man ein Plugin mit dem Namen "compare" installieren. Damit lassen sich zwei Scripte prima miteinander vergleichen.
Neu mit Speicherpfad c:\logs\
#include <Date.au3>
#include <MPDF_UDF.au3>
$dir = "C:\logs\"
$file1 = "C:\logs\getmac__.txt"
$file2 = "C:\logs\getmac_.txt"
$getmac = "C:\logs\getmac.txt"
If Not FileExists($dir) Then DirCreate ($dir)
FileOpen($file1, 2)
FileWrite($file1," BPCS Checkliste "&@CRLF)
FileWrite($file1,"====================================================="&@CRLF)
FileWrite($file1,""&@CRLF)
FileWrite($file1, "Current Date: " & _NowDate()&@CRLF)
FileWrite($file1, "Current Time: " & _NowTime()&@CRLF)
FileWrite($file1, ""&@CRLF)
FileWrite($file1, "********************Computer Data********************"&@CRLF)
FileWrite($file1, ""&@CRLF)
FileClose($file1)
RunWait(@ComSpec & " /c getmac /V > " & $file2, "", @SW_HIDE)
FileOpen($getmac, 2)
FileWrite($getmac, FileRead($file1) & @CRLF & FileRead($file2))
FileClose($file2)
FileClose($getmac)
;Einstellungen für die PDF Erstellung
_SetTitle("getmac")
_SetSubject("getmac to pdf")
_SetKeywords("pdf, AutoIt")
_OpenAfter(True);PDF nach erstellung öffnen
_SetUnit($PDF_UNIT_CM)
_SetPaperSize("A4")
_SetZoomMode($PDF_ZOOM_CUSTOM, 90)
_SetOrientation($PDF_ORIENTATION_PORTRAIT)
_SetLayoutMode($PDF_LAYOUT_CONTINOUS)
;initialize the pdf
_InitPDF("C:\logs\getmac.pdf")
_LoadFontTT("F1", $PDF_FONT_CALIBRI,$PDF_FONT_ITALIC)
_Txt2PDF($getmac, "F1")
;write the buffer to disk
_ClosePDFFile()
; #FUNCTION# ====================================================================================================================
; Name ..........: _Txt2PDF
; Description ...: Convert a text file to pdf
; Syntax ........: _Txt2PDF( $sText , $sFontAlias )
; Parameters ....: $sText - file path.
; $sFontAlias - font alias.
; Return values .: None
; Author(s) .....: Mihai Iancu (taietel at yahoo dot com)
; Modified ......:
; Remarks .......: If the string is very long, it will be scaled to paper width
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func _Txt2PDF($sFile, $sFontAlias)
Local $hFile = FileOpen($sFile)
Local $sText = FileRead($hFile)
FileClose($hFile)
Local $iUnit = Ceiling(_GetUnit())
Local $iX = 2
Local $iY = Ceiling(_GetPageHeight() / _GetUnit()) - 1.5
Local $iPagina = Ceiling(_GetPageWidth() / $iUnit) - $iX
Local $iWidth = Ceiling($iPagina - $iX);, 1)
Local $lScale
Local $iRanduri = StringSplit($sText & @CRLF & @CRLF & @CRLF & @CRLF, @CRLF, 3)
Local $iHR = 0.5 * Ceiling($iY / (10 * $iUnit))
Local $iPages = Ceiling((UBound($iRanduri)) * $iHR / $iY)
Local $iNrRanduri = Ceiling(UBound($iRanduri) / $iPages-2)
Local $nrp
For $j = 0 To $iPages + 2
$nrp = _BeginPage()
_DrawText(_GetPageWidth()/_GetUnit()-1, 1, $nrp, "F1", 10, $PDF_ALIGN_CENTER)
For $i = 0 To $iNrRanduri - 1
Local $sLength = Round(_GetTextLength($iRanduri[$i + $j * $iNrRanduri], $sFontAlias, 10))
Local $iH = $iY - $iHR * ($i + 1)
Select
Case $iH < 1
_EndPage()
Case $i + $j * $iNrRanduri = UBound($iRanduri) - 1
_EndPage()
Return
Case $sLength > $iWidth - 1
$lScale = Ceiling($iWidth * 100 / $sLength)
_SetTextHorizontalScaling($lScale)
_DrawText($iX, $iH, $iRanduri[$i + $j * $iNrRanduri], $sFontAlias, 10, $PDF_ALIGN_LEFT, 0)
_SetTextHorizontalScaling(100)
Case Else
_DrawText($iX, $iH, $iRanduri[$i + $j * $iNrRanduri], $sFontAlias, 10, $PDF_ALIGN_LEFT, 0)
EndSelect
Next
_EndPage()
Next
EndFunc ;==>_Txt2PDF
FileDelete($file1)
FileDelete($file2)
Alles anzeigen
2. Speicherpfad im Ausführungsverzeichnis:
#include <Date.au3>
#include <MPDF_UDF.au3>
$file1 = @ScriptDir & "\getmac__.txt"
$file2 = @ScriptDir & "\getmac_.txt"
$getmac =@ScriptDir & "\getmac.txt"
$sF = @ScriptDir & "\getmac.txt"
FileOpen($file1, 2)
FileWrite($file1," BPCS Checkliste "&@CRLF)
FileWrite($file1,"====================================================="&@CRLF)
FileWrite($file1,""&@CRLF)
FileWrite($file1, "Current Date: " & _NowDate()&@CRLF)
FileWrite($file1, "Current Time: " & _NowTime()&@CRLF)
FileWrite($file1, ""&@CRLF)
FileWrite($file1, "********************Computer Data********************"&@CRLF)
FileWrite($file1, ""&@CRLF)
;~ FileWrite($file1, "Serial number:"&@CRLF)
FileClose($file1)
RunWait(@ComSpec & ' /c ' & 'getmac /V > getmac_.txt' & '"', "", @ScriptDir, @SW_HIDE)
FileOpen($getmac, 2)
FileWrite($getmac, FileRead($file1) & @CRLF & FileRead($file2))
FileClose($file2)
FileClose($getmac)
;Einstellungen für die PDF Erstellung
_SetTitle("getmac")
_SetSubject("getmac to pdf")
_SetKeywords("pdf, AutoIt")
_OpenAfter(True);PDF nach erstellung öffnen
_SetUnit($PDF_UNIT_CM)
_SetPaperSize("A4")
_SetZoomMode($PDF_ZOOM_CUSTOM, 90)
_SetOrientation($PDF_ORIENTATION_PORTRAIT)
_SetLayoutMode($PDF_LAYOUT_CONTINOUS)
;initialize the pdf
_InitPDF(@ScriptDir & "\getmac.pdf")
_LoadFontTT("F1", $PDF_FONT_CALIBRI,$PDF_FONT_ITALIC)
_Txt2PDF($sF, "F1")
;write the buffer to disk
_ClosePDFFile()
; #FUNCTION# ====================================================================================================================
; Name ..........: _Txt2PDF
; Description ...: Convert a text file to pdf
; Syntax ........: _Txt2PDF( $sText , $sFontAlias )
; Parameters ....: $sText - file path.
; $sFontAlias - font alias.
; Return values .: None
; Author(s) .....: Mihai Iancu (taietel at yahoo dot com)
; Modified ......:
; Remarks .......: If the string is very long, it will be scaled to paper width
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func _Txt2PDF($sFile, $sFontAlias)
Local $hFile = FileOpen($sFile)
Local $sText = FileRead($hFile)
FileClose($hFile)
Local $iUnit = Ceiling(_GetUnit())
Local $iX = 2
Local $iY = Ceiling(_GetPageHeight() / _GetUnit()) - 1.5
Local $iPagina = Ceiling(_GetPageWidth() / $iUnit) - $iX
Local $iWidth = Ceiling($iPagina - $iX);, 1)
Local $lScale
Local $iRanduri = StringSplit($sText & @CRLF & @CRLF & @CRLF & @CRLF, @CRLF, 3)
Local $iHR = 0.5 * Ceiling($iY / (10 * $iUnit))
Local $iPages = Ceiling((UBound($iRanduri)) * $iHR / $iY)
Local $iNrRanduri = Ceiling(UBound($iRanduri) / $iPages-2)
Local $nrp
For $j = 0 To $iPages + 2
$nrp = _BeginPage()
_DrawText(_GetPageWidth()/_GetUnit()-1, 1, $nrp, "F1", 10, $PDF_ALIGN_CENTER)
For $i = 0 To $iNrRanduri - 1
Local $sLength = Round(_GetTextLength($iRanduri[$i + $j * $iNrRanduri], $sFontAlias, 10))
Local $iH = $iY - $iHR * ($i + 1)
Select
Case $iH < 1
_EndPage()
Case $i + $j * $iNrRanduri = UBound($iRanduri) - 1
_EndPage()
Return
Case $sLength > $iWidth - 1
$lScale = Ceiling($iWidth * 100 / $sLength)
_SetTextHorizontalScaling($lScale)
_DrawText($iX, $iH, $iRanduri[$i + $j * $iNrRanduri], $sFontAlias, 10, $PDF_ALIGN_LEFT, 0)
_SetTextHorizontalScaling(100)
Case Else
_DrawText($iX, $iH, $iRanduri[$i + $j * $iNrRanduri], $sFontAlias, 10, $PDF_ALIGN_LEFT, 0)
EndSelect
Next
_EndPage()
Next
EndFunc ;==>_Txt2PDF
FileDelete($file1)
FileDelete($file2)
Alles anzeigen
werde ich mir angucken, habe jetzt Feierabend, aber auf den ersten Blick sieht es gut aus.
Ich muss euch noch mal nerven.
Wenn er mir die PDF erstellt habe ich immer 2 Seiten, gibt es da ne Möglichkeit, das er nur eine Seite erstellt?
Edit: Kann es sein das es in der UDF festgelegt ist wie viele Seiten erstellt werden?