Erklärung zu @ComSpec findest du hier recht gut. ComSpec ist eine Umgebungsvariable - alles weitere beim Link.
Beiträge von BugFix
-
-
Versuchs so:
[autoit]Run($Pfad & "upx.exe -d")
[/autoit][autoit]Run(@ComSpec & " /c " & 'commandName')
[/autoit]wird für DOS-Konsolenprogramme verwendet.
-
no problem: Editfeld, Style: $ES_MULTILINE
-
Hi,
wer öfter mal Zugriff auf bestimmte Systemfenster benötigt und sich bisher mit Tastaturbefehlen beholfen hat: in vielen Fällen geht dies auch per Kommandozeile.
Eigentlich mehr durch Zufall bin ich auf die CPL-Files in Windows gestoßen.
Ich hab dann mal zu allen verfügbaren Files die Aufrufparameter ermittelt und zusammengestellt.Ich denke mal, der eine oder andere wird Verwendung dafür finden.
Spoiler anzeigen
Aufruf von Systemeinstellungen per Kommandozeile:Aufruf "Systemeigenschaften"
Registerkarte: "Allgemein" "control.exe sysdm.cpl,,0"
Registerkarte: "Computername" "control.exe sysdm.cpl,,1"
Registerkarte: "Hardware" "control.exe sysdm.cpl,,2"
Registerkarte: "Erweitert" "control.exe sysdm.cpl,,3"
Registerkarte: "Erweitert" <Button Systemleistung-Einstellungen> "Leistungsoptionen" "control.exe sysdm.cpl,,-1"
Registerkarte: "Systemwiederherstellung" "control.exe sysdm.cpl,,4"
Registerkarte: "Automatische Updates" "control.exe sysdm.cpl,,5"
Registerkarte: "Remote" "control.exe sysdm.cpl,,6"Aufruf "Eigenschaften von Anzeige"
Registerkarte: "Designs" "control.exe desk.cpl,,-1"
Registerkarte: "Desktop" "control.exe desk.cpl,,0"
Registerkarte: "Bildschirmschoner" "control.exe desk.cpl,,1"
Registerkarte: "Darstellung" "control.exe desk.cpl,,2"
Registerkarte: "Einstellungen" "control.exe desk.cpl,,3"Aufruf "Software"
"Programme ändern oder entfernen" "control.exe appwiz.cpl,,0"
"Neue Programme hinzufügen" "control.exe appwiz.cpl,,1"
"Windowskomponenten hinzufügen oder entfernen" "control.exe appwiz.cpl,,2"
"Programmzugriff und -standards festlegen" "control.exe appwiz.cpl,,3"CPL-FILE| FENSTER| PARAMETER-INDEX
- - -
ACCESS.CPL "Eingabehilfen" 1-Tastatur, 2-Sound, 3-Anzeige, 4-Maus, 5-Allgemein
INETCPL.CPL "Eigenschaften von Internet" 0-Allgemein, 1-Sicherheit, 2-Datenschutz, 3-Inhalte, 4-Verbindungen, 5-Programme, 6-Erweitert
INTL.CPL "Regions- und Sprachoptionen" 0-Regionale Einstellungen, 1-Sprache, 2-Erweitert
MAIN.CPL "Eigenschaften von Maus" 0-Tasten, 1-Zeiger, 2-Zeigeroptionen, 3-Rad, 4-Hardware, 5-Geräteeinstellungen
MMSYS.CPL "Eigenschaften von Sounds und Audiogeräte" 0-Lautstärke, 1-Sounds, 2-Audio, 3-Stimme, 4-Hardware
TELEPHON.CPL "Telefon- und Modemoptionen" 0-Wählregeln, 1-Modems, 2-Erweitert
TIMEDATE.CPL "Eigenschaften von Datum und Uhrzeit" 0-Datum und Uhrzeit, 1-Zeitzone
WSCUI.CPL "Windows-Sicherheitscenter" o.Parameter Hauptfenster, 0-WarnungseinstellungenFolgende Fenster werden ohne Parameter aufgerufen, also "control.exe *******.cpl"
FIREWALL.CPL "Windows Firewall" Allgemein (andere Register nicht einzeln ansprechbar)
HDWWIZ.CPL "Hardware-Assistant"
JOY.CPL "Gamecontroller"
NCPA.CPL "Netzwerkverbindungen"
NETSETUP.CPL "Netzwerkinstallationsassistent"
NUSRMGR.CPL "Benutzerkonten"
ODBCCP32.CPL "ODBC-Datenquellen-Administrator"
POWERCFG.CPL "Eigenschaften von Energieoptionen"EDIT
Hab das ganze jetzt praktikabel in eine GUI eingebettet.
- Textsuche nach Einstellungsoption ('sys' liefert z.B. alle erreichbaren Systemeigenschaften)
- Suche-Button ist DEFPUSHBUTTON
- bei Klick auf gewünschten Parameter wird der Kommandozeilenbefehl angezeigt
- Testbutton zur Vorschau
- Übernahme CmdLine-Befehl in Zwischenablage als String pur oder als "Run(Befehl)"
- alle Button per Tastatur wählbarEdit: Jetzt angepaßt auf Version 3.2.10.0
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#Include <GuiListBox.au3>
#include <Array.au3>
Opt("GUIOnEventMode", 1)Dim $arSearch[1] = ['']
[/autoit] [autoit][/autoit] [autoit]
Dim $arCPL[58][3] ; FENSTER| CPL-FILE| PARAMETER-INDEX
$arCPL[0][0] = "Systemeigenschaften - Allgemein"
$arCPL[1][0] = "Systemeigenschaften - Computername"
$arCPL[2][0] = "Systemeigenschaften - Hardware"
$arCPL[3][0] = "Systemeigenschaften - Erweitert"
$arCPL[4][0] = "Systemeigenschaften - Erweitert <Button Systemleistung-Einstellungen> Leistungsoptionen"
$arCPL[5][0] = "Systemeigenschaften - Systemwiederherstellung"
$arCPL[6][0] = "Systemeigenschaften - Automatische Updates"
$arCPL[7][0] = "Systemeigenschaften - Remote"
$arCPL[8][0] = "Eigenschaften von Anzeige - Designs"
$arCPL[9][0] = "Eigenschaften von Anzeige - Desktop"
$arCPL[10][0] = "Eigenschaften von Anzeige - Bildschirmschoner"
$arCPL[11][0] = "Eigenschaften von Anzeige - Darstellung"
$arCPL[12][0] = "Eigenschaften von Anzeige - Einstellungen"
$arCPL[13][0] = "Software - Programme ändern oder entfernen"
$arCPL[14][0] = "Software - Neue Programme hinzufügen"
$arCPL[15][0] = "Software - Windowskomponenten hinzufügen oder entfernen"
$arCPL[16][0] = "Software - Programmzugriff und -standards festlegen"
$arCPL[17][0] = "Eingabehilfen - Tastatur"
$arCPL[18][0] = "Eingabehilfen - Sound"
$arCPL[19][0] = "Eingabehilfen - Anzeige"
$arCPL[20][0] = "Eingabehilfen - Maus"
$arCPL[21][0] = "Eingabehilfen - Allgemein"
$arCPL[22][0] = "Eigenschaften von Internet - Allgemein"
$arCPL[23][0] = "Eigenschaften von Internet - Sicherheit"
$arCPL[24][0] = "Eigenschaften von Internet - Datenschutz"
$arCPL[25][0] = "Eigenschaften von Internet - Inhalte"
$arCPL[26][0] = "Eigenschaften von Internet - Verbindungen"
$arCPL[27][0] = "Eigenschaften von Internet - Programme"
$arCPL[28][0] = "Eigenschaften von Internet - Erweitert"
$arCPL[29][0] = "Regions- und Sprachoptionen - Regionale Einstellungen"
$arCPL[30][0] = "Regions- und Sprachoptionen - Sprache"
$arCPL[31][0] = "Regions- und Sprachoptionen - Erweitert"
$arCPL[32][0] = "Eigenschaften von Maus - Tasten"
$arCPL[33][0] = "Eigenschaften von Maus - Zeiger"
$arCPL[34][0] = "Eigenschaften von Maus - Zeigeroptionen"
$arCPL[35][0] = "Eigenschaften von Maus - Rad"
$arCPL[36][0] = "Eigenschaften von Maus - Hardware"
$arCPL[37][0] = "Eigenschaften von Maus - Geräteeinstellungen"
$arCPL[38][0] = "Eigenschaften von Sounds und Audiogeräte - Lautstärke"
$arCPL[39][0] = "Eigenschaften von Sounds und Audiogeräte - Sounds"
$arCPL[40][0] = "Eigenschaften von Sounds und Audiogeräte - Audio"
$arCPL[41][0] = "Eigenschaften von Sounds und Audiogeräte - Stimme"
$arCPL[42][0] = "Eigenschaften von Sounds und Audiogeräte - Hardware"
$arCPL[43][0] = "Telefon- und Modemoptionen - Wählregeln"
$arCPL[44][0] = "Telefon- und Modemoptionen - Modems"
$arCPL[45][0] = "Telefon- und Modemoptionen - Erweitert"
$arCPL[46][0] = "Eigenschaften von Datum und Uhrzeit - Datum und Uhrzeit"
$arCPL[47][0] = "Eigenschaften von Datum und Uhrzeit - Zeitzone"
$arCPL[48][0] = "Windows-Sicherheitscenter - Hauptfenster"
$arCPL[49][0] = "Windows-Sicherheitscenter - Warnungseinstellungen"
$arCPL[50][0] = "Windows Firewall - Allgemein"
$arCPL[51][0] = "Hardware-Assistant"
$arCPL[52][0] = "Gamecontroller"
$arCPL[53][0] = "Netzwerkverbindungen"
$arCPL[54][0] = "Netzwerkinstallationsassistent"
$arCPL[55][0] = "Benutzerkonten"
$arCPL[56][0] = "ODBC-Datenquellen-Administrator"
$arCPL[57][0] = "Eigenschaften von Energieoptionen"$arCPL[0][1] = "SYSDM.CPL"
[/autoit] [autoit][/autoit] [autoit]
$arCPL[1][1] = "SYSDM.CPL"
$arCPL[2][1] = "SYSDM.CPL"
$arCPL[3][1] = "SYSDM.CPL"
$arCPL[4][1] = "SYSDM.CPL"
$arCPL[5][1] = "SYSDM.CPL"
$arCPL[6][1] = "SYSDM.CPL"
$arCPL[7][1] = "SYSDM.CPL"
$arCPL[8][1] = "DESK.CPL"
$arCPL[9][1] = "DESK.CPL"
$arCPL[10][1] = "DESK.CPL"
$arCPL[11][1] = "DESK.CPL"
$arCPL[12][1] = "DESK.CPL"
$arCPL[13][1] = "APPWIZ.CPL"
$arCPL[14][1] = "APPWIZ.CPL"
$arCPL[15][1] = "APPWIZ.CPL"
$arCPL[16][1] = "APPWIZ.CPL"
$arCPL[17][1] = "ACCESS.CPL"
$arCPL[18][1] = "ACCESS.CPL"
$arCPL[19][1] = "ACCESS.CPL"
$arCPL[20][1] = "ACCESS.CPL"
$arCPL[21][1] = "ACCESS.CPL"
$arCPL[22][1] = "INETCPL.CPL"
$arCPL[23][1] = "INETCPL.CPL"
$arCPL[24][1] = "INETCPL.CPL"
$arCPL[25][1] = "INETCPL.CPL"
$arCPL[26][1] = "INETCPL.CPL"
$arCPL[27][1] = "INETCPL.CPL"
$arCPL[28][1] = "INETCPL.CPL"
$arCPL[29][1] = "INTL.CPL"
$arCPL[30][1] = "INTL.CPL"
$arCPL[31][1] = "INTL.CPL"
$arCPL[32][1] = "MAIN.CPL"
$arCPL[33][1] = "MAIN.CPL"
$arCPL[34][1] = "MAIN.CPL"
$arCPL[35][1] = "MAIN.CPL"
$arCPL[36][1] = "MAIN.CPL"
$arCPL[37][1] = "MAIN.CPL"
$arCPL[38][1] = "MMSYS.CPL"
$arCPL[39][1] = "MMSYS.CPL"
$arCPL[40][1] = "MMSYS.CPL"
$arCPL[41][1] = "MMSYS.CPL"
$arCPL[42][1] = "MMSYS.CPL"
$arCPL[43][1] = "TELEPHON.CPL"
$arCPL[44][1] = "TELEPHON.CPL"
$arCPL[45][1] = "TELEPHON.CPL"
$arCPL[46][1] = "TIMEDATE.CPL"
$arCPL[47][1] = "TIMEDATE.CPL"
$arCPL[48][1] = "WSCUI.CPL"
$arCPL[49][1] = "WSCUI.CPL"
$arCPL[50][1] = "FIREWALL.CPL"
$arCPL[51][1] = "HDWWIZ.CPL"
$arCPL[52][1] = "JOY.CPL"
$arCPL[53][1] = "NCPA.CPL"
$arCPL[54][1] = "NETSETUP.CPL"
$arCPL[55][1] = "NUSRMGR.CPL"
$arCPL[56][1] = "ODBCCP32.CPL"
$arCPL[57][1] = "POWERCFG.CPL"$arCPL[0][2] = 0
[/autoit] [autoit][/autoit] [autoit]
$arCPL[1][2] = 1
$arCPL[2][2] = 2
$arCPL[3][2] = 3
$arCPL[4][2] = -1
$arCPL[5][2] = 4
$arCPL[6][2] = 5
$arCPL[7][2] = 6
$arCPL[8][2] = -1
$arCPL[9][2] = 0
$arCPL[10][2] = 1
$arCPL[11][2] = 2
$arCPL[12][2] = 3
$arCPL[13][2] = 0
$arCPL[14][2] = 1
$arCPL[15][2] = 2
$arCPL[16][2] = 3
$arCPL[17][2] = 1
$arCPL[18][2] = 2
$arCPL[19][2] = 3
$arCPL[20][2] = 4
$arCPL[21][2] = 5
$arCPL[22][2] = 0
$arCPL[23][2] = 1
$arCPL[24][2] = 2
$arCPL[25][2] = 3
$arCPL[26][2] = 4
$arCPL[27][2] = 5
$arCPL[28][2] = 6
$arCPL[29][2] = 0
$arCPL[30][2] = 1
$arCPL[31][2] = 2
$arCPL[32][2] = 0
$arCPL[33][2] = 1
$arCPL[34][2] = 2
$arCPL[35][2] = 3
$arCPL[36][2] = 4
$arCPL[37][2] = 5
$arCPL[38][2] = 0
$arCPL[39][2] = 1
$arCPL[40][2] = 2
$arCPL[41][2] = 3
$arCPL[42][2] = 4
$arCPL[43][2] = 0
$arCPL[44][2] = 1
$arCPL[45][2] = 2
$arCPL[46][2] = 0
$arCPL[47][2] = 1
$arCPL[48][2] = -99
$arCPL[49][2] = 0
$arCPL[50][2] = -99
$arCPL[51][2] = -99
$arCPL[52][2] = -99
$arCPL[53][2] = -99
$arCPL[54][2] = -99
$arCPL[55][2] = -99
$arCPL[56][2] = -99
$arCPL[57][2] = -99$guiCPL = GUICreate("Generiere CPL - CmdLine", 625, 513, -1, -1)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "guiCPLClose")
$Group1 = GUICtrlCreateGroup(" Suche ( OHNE Suchbegriff wird Liste neu geladen )", 8, 8, 609, 49)
$inSearch = GUICtrlCreateInput("", 40, 26, 433, 21)
GUICtrlSetTip(-1, 'Mit Suche OHNE Suchbegriff' & @LF & 'wird die Liste wieder neu geladen.')
$btnSearch = GUICtrlCreateButton("Start", 500, 26, 100, 21, $BS_DEFPUSHBUTTON)
GUICtrlSetOnEvent(-1, "btnSearchClick")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$List1 = GUICtrlCreateList("", 8, 64, 609, 357)
GUICtrlSetOnEvent(-1, "List1Click")
$Group2 = GUICtrlCreateGroup(" Cmd-Line ", 8, 432, 609, 73)
$inCmdOut = GUICtrlCreateInput("", 40, 448, 433, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
GUICtrlSetColor(-1, 0x00008B)
$btnShow = GUICtrlCreateButton("&Test", 500, 448, 100, 21, 0)
GUICtrlSetOnEvent(-1, "btnShowClick")
$btnRaw = GUICtrlCreateButton("Kopiere &String pur", 68, 477, 150, 21, 0)
GUICtrlSetOnEvent(-1, "btnRawClick")
$btnRun = GUICtrlCreateButton("Kopiere String als: &Run( )", 295, 477, 150, 21, 0)
GUICtrlSetOnEvent(-1, "btnRunClick")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)Global $hList = GUICtrlGetHandle($List1)
[/autoit] [autoit][/autoit] [autoit]
_setList()HotKeySet("!t", "btnShowClick")
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("!s", "btnRawClick")
HotKeySet("!r", "btnRunClick")While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _setList()
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($arCPL)-1
GUICtrlSetData($List1, $arCPL[$i][0])
Next
EndFuncFunc btnRawClick()
[/autoit] [autoit][/autoit] [autoit]
Local $file = GUICtrlRead($inCmdOut)
If $file <> '' Then
ClipPut($file)
MsgBox(0, '', $file & @LF & @LF & 'wurde in Zwischenablage kopiert' )
EndIf
EndFuncFunc btnRunClick()
[/autoit] [autoit][/autoit] [autoit]
Local $file = GUICtrlRead($inCmdOut), $str
If $file <> '' Then
$str = "Run('" & $file & "')"
ClipPut($str)
MsgBox(0, '', $str & @LF & @LF & 'wurde in Zwischenablage kopiert' )
EndIf
EndFuncFunc btnSearchClick()
[/autoit] [autoit][/autoit] [autoit]
Local $toSearch = GUICtrlRead($inSearch)
ReDim $arSearch[1]
$arSearch[0] = ''
_GUICtrlListBoxClear($hList)
If $toSearch = '' Then
_setList()
Else
For $i = 0 To UBound($arCPL)-1
If StringInStr($arCPL[$i][0], $toSearch) Then
If $arSearch[0] = '' Then
$arSearch[0] = $arCPL[$i][0]
Else
ReDim $arSearch[UBound($arSearch)+1]
$arSearch[UBound($arSearch)-1] = $arCPL[$i][0]
EndIf
EndIf
Next
For $i = 0 To UBound($arSearch)-1
GUICtrlSetData($List1, $arSearch[$i])
Next
EndIf
EndFuncFunc btnShowClick()
[/autoit] [autoit][/autoit] [autoit]
Local $file = GUICtrlRead($inCmdOut)
If $file <> '' Then Run($file)
EndFuncFunc guiCPLClose()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc List1Click()
[/autoit] [autoit][/autoit] [autoit]
$currPosIndex = _GUICtrlListBox_GetCaretIndex($hList)
For $i = 0 To UBound($arCPL)-1
If $arCPL[$i][0] = _GUICtrlListBox_GetText($hList, $currPosIndex) Then ExitLoop
Next
GUICtrlSetData($inCmdOut, _Generate($arCPL[$i][1], $arCPL[$i][2]))
EndFuncFunc _Generate($CPL, $PARAM)
[/autoit] [autoit][/autoit] [autoit]
Local $cmd = "control.exe "
If $PARAM <> -99 Then
$cmd &= $CPL & ",," & $PARAM
Else
$cmd &= $CPL
EndIf
Return $cmd
EndFuncFunc _GUICtrlListBoxClear($Handle)
[/autoit]
Do
Local $rest = _GUICtrlListBox_DeleteString($hList, 0)
Until $rest = 0
EndFunc -
[autoit]
#NoTrayIcon
[/autoit]am Scriptanfang
-
Naja, ich hab natürlich aufmerksam verfolgt, was sich da entwickelt hat und nun unter dem Namen Vista unsere Kohle kassieren will.

Ich konnte kein Feature entdecken, dass mich auch nur ansatzweise ernsthaft zu der Frage drängt: besorgen oder nicht.
Dafür gibt es im Gegenteil eher Ansatzpunkte das Ganze mit etwas gesunder Skepsis zu betrachten. Die Implementierung von Routinen, die überprüfen ob Fremdsoftware den Redmondern "genehm" ist (obwohl dies ja mehr im Hardwarebereich stattfindet) halte ich für den Beginn des Untergangs Freier Software.
Man wird eh genug überwacht und kontrolliert - ich brauch nicht noch 'nen PC der über die Nutzung von Software entscheidet. Demnächst sagt mir mein Compi noch, mit welcher Frau ich ausgehen darf... :schild4:Soweit die Meinung eines Dinosauriers.
-
Für eine automatisierte Änderung der Arbeitsgruppe läßt sich die "NetDom.exe" ( per Batch: call netdom.exe member /joinworkgroup ARBEITSGRUPPE ) verwenden. Da man die aber nicht standardmäßig an Bord hat, hier eine Lösung über die Systemeinstellungen mittels "Send" und "Controlclick". Einen direkteren Weg konnte ich nicht finden.
Also falls es mal jemand braucht.
Spoiler anzeigen
[autoit]; Arbeitsgruppennamen ändern
[/autoit]
$NeueArbeitsgruppe = "MSHEIMNETZ" ; festlegen oder per Inputbox während des Ausführens ändern
;~ $NeueArbeitsgruppe = StringUpper(InputBox("Arbeitsgruppe", "Bitte neue Arbeitsgruppe eintragen: ", "MSHEIMNETZ"))
Send("{LWINDOWN}{PAUSE}{LWINUP}")
WinWaitActive("Systemeigenschaften")
Send("{RIGHT}")
Send("!n")
WinWaitActive("Computernamen ändern")
ControlFocus("Computernamen ändern", "", "Edit4")
Send("{SHIFTDOWN}{END}{SHIFTUP}")
If ControlGetText("Computernamen ändern", "", "Edit4") = $NeueArbeitsgruppe Then
MsgBox(0, '', "Arbeitsgruppe ist bereits: " & $NeueArbeitsgruppe & ".")
ControlClick("Computernamen ändern", "", "Button7")
ControlClick("Systemeigenschaften", "", "Button4")
Exit
EndIf
Send($NeueArbeitsgruppe)
ControlClick("Computernamen ändern", "", "Button6")
While 1
If StringInStr(WinGetText("Computernamen ändern"), "Willkommen in der Arbeitsgruppe " & $NeueArbeitsgruppe) Then
ExitLoop
Else
Sleep(100)
EndIf
WEnd
Send("{ENTER}")
While 1
If StringInStr(WinGetText("Computernamen ändern"), "Die Änderungen werden erst wirksam, wenn Sie den Computer neu starten.") Then
ExitLoop
Else
Sleep(100)
EndIf
WEnd
Send("{ENTER}")
ControlClick("Systemeigenschaften", "", "Button3") ; Systemeigenschaften schließen
ControlClick("Geänderte Systemeinstellungen", "", "Button1") ; Ja (Neustart) = "Button1", Nein ist "Button2" -
[autoit]
$Pos = _ArraySearch($arTemp, $tmp1, 0, 0, 0, True)
[/autoit]
"True" ? wofür steht das Argument, hab ich in der Hilfe nicht gefunden, dort sind nur: String, Searchstring + 3 Arg. aufgeführt. -
Check mal ab, ob $arTemp überhaupt Inhalt hat. Mach vor der Schleife _ArrayDisplay( ).
-
Erneut etwas raten:
Gesamten Inhalt von $anzahl Dateien in eine Zieldatei schreiben? -
Sry, aber du hast noch immer nicht geschrieben WAS als Ergebnis herauskommen soll??
-
Du hast vergessen, die Variable fürs Ergebnis als Array zu deklarieren:
[autoit]Dim $arErgebnis[1]
[/autoit]Schreib es so, dann klappt es.
-
Laß dir mal vor _FileWriteFromArray() das Array anzeigen:
_ArrayDisplay($array, "Titel")Mit meinen Testdateien funzt das.
-
[autoit]
_FileWriteFromArray($pathMain, $match,1,1)
[/autoit](nur Eintrag 1) oder
[autoit]_FileWriteFromArray($pathMain, $match,1,0)
[/autoit](gesamtes Array) ist in diesem Fall identisch, da nur ein Treffer.
Aber - in jedem Schleifendurchlauf mit Treffer bewirkt dieser Befehl, dass "$pathMain" NEU geschrieben wird. Die alte Datei wird also überschrieben.
Ich mach dir gleich mal 'ne Variante, die das löst. Kommt im Edit.EDIT:
Spoiler anzeigen
[autoit]For $i = 1 To $string[0] ; Dateiliste abarbeiten
[/autoit]
_FileReadToArray($pfad & $string[$i], $frta)
If @error <> 0 Then
MsgBox(4096, "Error", " Fehler beim Einlesen der Datei: " & $pfad & $string[$i] & @LF & "Fehler: " & @error)
Else
$match = _StringBetween($frta[2],"/", ";") ; Wert in Zeile 2 auslesen
If Not @error Then
If StringInStr($frta[2], "K;380") Then ; Eintrag ist vorhanden
MsgBox(4096, "", "vorhanden bei datei: "& $string[$i] & " " & $match[0])
;_Rechnung()
_ArrayAdd($arErgebnis, $match[0])
Sleep(1500)
;~ ExitLoop ; dann wird Bearbeitung abgebrochen !!!
ElseIf StringInStr($frta[2], "K;130") Then ; Eintrag ist vorhanden
MsgBox(4096, "", "vorhanden bei datei: "& $string[$i] & " " & $match[0])
;_EVN()
Sleep(1500)
;~ ExitLoop ; dann wird Bearbeitung abgebrochen !!!
EndIf
Else
MsgBox(4096, "", "In Datei: "& $string[$i] & " ist Nummer nicht enthalten.")
EndIf
EndIf
Next
_FileWriteFromArray($pathMain, $arErgebnis,1)
Exit -
So, hab deine Files mal nachgebaut
und dann getestet.
Jetzt funzt es:Spoiler anzeigen
[autoit]#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <date.au3>
#include <array.au3>
#include <string.au3>
Opt("TrayIconDebug", 1) ;0=no info, 1=debug line infoDim $pfad = "C:\GLI_Prod\12 2006\"
[/autoit] [autoit][/autoit] [autoit]
Dim $string = _FileListToArray($pfad, "*.INH") ; liest alle *.INH-Files in Array $string
Dim $match, $frtaIf Not IsArray($string) Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(16, "", "Keine Inhouse Datei(en) gefunden.. EXIT!")
Exit
EndIfFor $i = 1 To $string[0] ; Dateiliste abarbeiten
[/autoit]
_FileReadToArray($pfad & $string[$i], $frta)
If @error <> 0 Then
MsgBox(4096, "Error", " Fehler beim Einlesen der Datei: " & $pfad & $string[$i] & @LF & "Fehler: " & @error)
Else
$match = _StringBetween($frta[2],"/", ";") ; Wert in Zeile 2 auslesen
If StringInStr($frta[2], "K;380") Then ; Eintrag ist vorhanden
MsgBox(4096, "", "vorhanden bei datei: "& $string[$i] & " " & $match[0])
;_Rechnung()
Sleep(1500)
;~ ExitLoop ; dann wird Bearbeitung abgebrochen !!!
ElseIf StringInStr($frta[2], "K;130") Then ; Eintrag ist vorhanden
;MsgBox(4096, "", "vorhanden bei datei: "&$frta[$i])
;_EVN()
Sleep(1500)
;~ ExitLoop ; dann wird Bearbeitung abgebrochen !!!
EndIf
EndIf
Next -
Zitat
mit _filewritefromarry schreibe ich dann in eine datei?
Ja, jeder Eintrag des Arrays wird in eine einzelne Zeile geschrieben.Ich hab mal einige Änderungen vorgenommen und entsprechend kommentiert.
Spoiler anzeigen
[autoit]#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <date.au3>
#include<array.au3>
Opt("TrayIconDebug", 1) ;0=no info, 1=debug line info
;~ $frta = _FileListToArray("C:\GLI_Prod\12 2006\", "*.INH") überflüssig -> neue Deklaration in Zeile 7
Global $string = _FileListToArray("C:\GLI_Prod\12 2006\", "*.INH") ; liest alle *.INH-Files in Array $string
;~ Global $frta = _StringBetween($string,"/", ";") ; selektiert aus DATEINAMEN !! -> da kann er nix finden
Dim $match, $frtaIf Not IsArray($string) Then
[/autoit]
MsgBox(16, "", "Keine Inhouse Datei(en) gefunden.. EXIT!")
Exit
EndIf
For $i = 1 To $string[0] ; Dateiliste abarbeiten
If IsArray(_FileReadToArray("C:\GLI_Prod\12 2006\" & $string[$i], $frta)) Then ; einzelne Datei in Array lesen ($ftra)
$match = _StringBetween($frta[2],"/", ";") ; Wert in Zeile 2 auslesen
If StringInStr($frta[2], "K;380") Then ; Eintrag ist vorhanden
MsgBox(4096, "", "vorhanden bei datei: "& $string[$i] & "" & $match[0])
;_Rechnung()
Sleep(1500)
ExitLoop ; dann wird Bearbeitung abgebrochen !!!
ElseIf StringInStr($frta[2], "K;130") Then ; Eintrag ist vorhanden
;MsgBox(4096, "", "vorhanden bei datei: "&$frta[$i])
;_EVN()
Sleep(1500)
ExitLoop ; dann wird Bearbeitung abgebrochen !!!
EndIf
Else
MsgBox(4096, "Error", " Fehler beim Einlesen der Datei: " &"C:\GLI_Prod\12 2006\" & $string[$i] & @LF & "Fehler: " & @error)
;~ Exit ; falsch -> dann wird Programm beendet, nächste Datei soll aber bearbeitet werden!
EndIf
Next -
Zitat
wie kann ich das skype-setup starten wenn ich den genauen name nicht kenne?
Verstehe ich nicht ganz. Du mußt doch die Installationsdateien auf einem Datenträger haben - dann kennst du doch auch den Namen?
Falls dir nur der Speicherort bekannt ist, könntest du diesen Pfad durchsuchen, also alle Dateinamen (filtern nach EXE-Files) in ein Array laden, Elementweise abfragen ob StringInString($Element, "Skype"). Wenn ja,ist das die gesuchte Datei. -
Wenn du diese Punkte entfernen möchtest - warum verwendest du dann die Installversion von Foxit Reader? Mit der ZIP-Version hast du die Probs nicht - einfach in einen Zielordner kopieren - fertig.
-
schau dir mal _StringBetween( ) an
[autoit]$var = _StringBetween($zeile2, "/", ";")
[/autoit]
$nummer = $var[0] -
Zeile 2 ist auch die zweite Zeile des Array (Leerzeilen inklusive).
Also: $txtZeile2 = Array[2]Was also möchtest du genau machen?
Edit: Sry, Array hat ja in diesem Fall bei [0] die Anzahl