Klappt einwandfrei -
Auf die Idee es so zu versuchen bin ich ja selbst gekommen, hat aber nicht geklappt. War wohl ein Tippfehler......
Vielen Dank
Beitrag geschlossen,
User zufrieden ![]()
Klappt einwandfrei -
Auf die Idee es so zu versuchen bin ich ja selbst gekommen, hat aber nicht geklappt. War wohl ein Tippfehler......
Vielen Dank
Beitrag geschlossen,
User zufrieden ![]()
Aber bei wirklich großen Dateien funktioniert es wunderbar ![]()
@mega
Hallo Mega,
dein PS 'geht auch mit Move' habe ich noch nicht ganz kapiert.
Wenn ich
$winShell.namespace($tofile).MOVEHere($fromFile,$FOF_RESPOND_YES)
anstelle
$winShell.namespace($tofile).CopyHere($fromFile,$FOF_RESPOND_YES)
schreibe, klappt es nicht.
Was muss ich tun um zu verschieben?
Hallo, vielen Dank.
Ich habe gesucht, aber wohl die falschen Stichwörter eingegeben, 'rekursiv' wollte ich ja nix machen.... ![]()
Hier ist das aber wirklich gut beschrieben:
Link auf anderen Beitrag
Ich habe die für mich relevante Möglichkeit bereits oben eingefügt.
Vielen Dank
Carsten
Hallo,
ich möchte eine riesige Sicherungsdatei verschieben (Zeit: ca. 70 min) und ich denke immer der Rechner ist abgestürzt, weil sich einfach gar nichts tut.
Frage1:
Gibt es einen Zeitvorteil bei einer der Varianten oder ist der vernachlässigbar?
;Variante 1
$befehl = "move "&$pfad_sich_Server&$dateiliste[$i]&" "&$pfad_ziel
RunWait(@ComSpec & " /c " & $befehl)
;Variante 2
FileMove($pfad_sich_Server&$dateiliste[$i],$pfad_ziel)
;Variante 3 (nachträglich eingefügt, vgl. Verweis weiter unten)
;~ 4 Do not display a progress dialog box.
;~ 8 Give the file being operated on a new name in a move, copy, or rename operation if a file with the target name already exists.
;~ 16 Respond with "Yes to All" for any dialog box that is displayed.
;~ 64 Preserve undo information, if possible.
;~ 128 Perform the operation on files only if a wildcard file name (*.*) is specified.
;~ 256 Display a progress dialog box but do not show the file names.
;~ 512 Do not confirm the creation of a new directory if the operation requires one to be created.
;~ 1024 Do not display a user interface if an error occurs.
;~ 2048 Version 4.71. Do not copy the security attributes of the file.
;~ 4096 Only operate in the local directory. Don't operate recursively into subdirectories.
;~ 9182 Version 5.0. Do not copy connected files as a group. Only copy the specified files.
_FileCopy($pfad_sich_Server&$dateiliste[$i] ,$pfad_ziel )
Func _FileCopy($fromFile,$tofile)
Local $FOF_RESPOND_YES = 16
Local $FOF_SIMPLEPROGRESS = 512
$winShell = ObjCreate("shell.application")
$winShell.namespace($tofile).CopyHere($fromFile,$FOF_RESPOND_YES)
EndFunc
Frage2: (Lösung wurde oben nachträglich eingefügt)
Gibt es eine weitere Möglichkeit um eine Restzeitanzeige für das Kopieren bzw. Verschieben von Dateien mit AutoIt zu erhalten?
Im Prinzip könnte ich die Windows-Kopierfunktion verwenden, denn dort gibt es den fortlaufenden Balken - aber wie greife ich darauf von AutoIt aus zu?
Vielen Dank
viele Grüsse
Carsten
Hallo huggy,
witzige Idee. Für Anfänger bestimmt lehrreich.
Aber ich glaube oft sind es nicht die einzelnen Befehle die Verständnisschwierigkeiten bereiten, sondern die Zusammenhänge - und das geht so leider nicht.
Auch glaube ich, dass hier die gleiche Diskussion geführt werden könnte, wie Maus contra Tastatur.
Ich bin Tastatur-Fan: Man braucht länger um etwas zu erlernen, aber wenn es mal 'im Kopf ist', dann ist man viel schneller. (ok, ich bin älter und kenne noch die DOS-Zeit ohne Maus *grins*)
Maus-Verfechter argumentieren, dass es einfach einfacher geht........... ist auch richtig, aber langfristig halt nicht schneller.
Sei mir nicht böse, wenn ich somit meine Meinung kund tue, dass hier das Aufwand-Nutzen-Verhältnis für KENNER (!) nicht gut ist. Das ist eine super Aufgabe für Anfänger, die lernen nämlich gleich was die einzelnen Befehle können.
Grüsse
Carsten
Hallo,
diese Masche gibt es ähnlich schon seit vielen, vielen Jahren im geschäftlichen Bereich: Man bekommt ein Schreiben, das wie eine Rechnung der Branchenbücher aussieht, aber sich im Kleingedruckten als Angebot erweist. Sollte man nicht aufpassen und das Ding zahlen, hat man damit das Angebot angenommen - die Adresse wird 'irgendwo' veröffentlicht und die Rechnung ist gültig.
Grundsätzlich gilt: Was man nicht angefordert hat, muss man auch nicht beantworten (auch unangefordert zugeschickte Waren müssen nicht zurückgeschickt werden, nur fachgerecht zur Abholung aufbewahrt werden).
Daher handhabe ich es auch wie oben schon erwähnt:
Im Zweifel nichts tun und abwarten.
In unserem Aufenthaltsraum hängt neben der Ausgangstüre ein großer roter Zettel 'Alle Fenster zu?'.
Wie kann ich das mit AutoIt lösen???
*lacht*
Ich mache auch immer den Fehler viel zu viel über den PC lösen zu wollen, aber es gibt einen alten Spruch der heute - meiner Meinung mehr denn je - gültig ist: 'In der Einfachheit liegt die Würze'.
Aber ich kenne das, denn ich löse auch gerne Probleme um der Lösungs-Willen (nicht der Notwendigkeit wegen).
Vielleicht solltest Du den Mitarbeitern auch einfach mehr Selbstverantwortung übergeben, die geht heute leider - durch die Gesetzgebung gefördert - immer mehr verloren. Dabei wollen wir doch alle Mitarbeiter, die mitdenken.....
Aber ok, wir sind hier ja in einem AutoIt-Forum.....
Schönen Feiertag morgen (wer einen hat)
wie wäre es mit gutem Deutsch? *grins*
Ersetze 'help' mit 'hilfe'. Ich bin mir nicht sicher, ob Windows dass dann versteht und Du kannst Deine eigene Funktion dahinter legen.
Vielleicht noch eine andere Idee.....
Da ich noch mit DOS-Programmen arbeite, erlebe ich öfter, dass Windows so seine Probleme hat mit offenen DOS-Programmen sauber runter zu fahren. Vielleicht funktioniert es, wenn Du einfach ein DOS-Fenster auf machst, welches 10 Sec exisitert. In dieser Zeit blockiert sich der Shutdown-Prozess vielleicht.
Habe das aber nicht getestet.
P.S: Das löst Dein Problem mit dem Shutdown / Reboot allerdings auch nicht.
Kannst Du evtl. die Meldung zeitgesteuert anzeigen lassen?
Lass die Anzeige doch immer anzeigen, oder sind deine Benutzer so döddelig, dass sie die Fenster vormittags schließen weil die Anzeige beim reboot kommt, obwohl sie noch nicht heim gehen? *lacht*
Ach, noch ein Nachtrag:
Meine Erfahrung ist übrigens, dass nach einer (ziemlich kurzen Weile) die Meldung eh niemand mehr liest. Ich hatte mal eine ähnliche Funktion und es musste immer ein anderer Buchstabe gedrückt werden um die Meldung wegzudrücken. Aber die haben nur geschaut welcher Buchstabe dran war - gelesen hat die Meldung dann niemand mehr - darüber nachgedacht was die Meldung bedeutete hat auch niemand mehr. Soviel zu 'Lebenserfahrung'. Vielleicht löst das auch Dein Problem.... ![]()
Super, danke für die schnelle Antwort.
Leider weiß ich nicht mehr welche Version ich gestern noch drauf hatte *grumpfl*.
*folgender Satz wird gestrichen...*
Weiß jemand zufällig aus dem Stehgreif wann diese Umstellung erfolgte, d.h. welche (alte) Version noch mit Win 98 funktionierte?
*folgende Bemerkungen hinzugefügt...*
Ok, habe kapiert was es mit dem 'A' auf sich hat - diese Compiler-Version (Aut2exeA.exe) wird gleich mitgeliefert..... Ich habe im Download-Archiv vergeblich nach einer 'A-Version' gesucht.
Ach wie schön, ich liebe AutoIt - es gibt doch immer wieder eine Lösung (wenn manchmal die Suche danach auch etwas nervig ist......)
Danke
Carsten
Hallo,
ok, ich weiß..... Win 98 sollte kein 'Hasta la vista' ('Auf Wiedersehen') mehr nach MS-Wunsch feiern.
Aber ich widersetze mich (noch) diesem Wunsch *grins*
Jedenfalls habe ich gestern (seit längerem) mal wieder auf die aktuelle stabile Version aufgerüstet und meine Programme funktionieren auf XP, jedoch leider nicht mehr auf Win 98. Es passiert..... einfach nix, d.h. kurze Sanduhr (sehr kurz) und fertig.
Gibt es da einen Trick? Habe ich etwas verpasst?
Vielen Dank
viele Grüße
Carsten
Hallo,
ich habe mir das auch mal näher angeschaut. Dieses Script (siehe Link von peethebee, Beispiel 1 aus den Auto3Lib, Bereich 'Pipes') ist halt doch höhere AutoIt-Programmierkunst ![]()
Jedenfalls kapier ich nicht viel und funktionieren tut es auch nicht.
#include <A3LPipes.au3>
#include <A3LWinAPI.au3>
Opt("MustDeclareVars", 1)
[/autoit] [autoit][/autoit] [autoit]; ===============================================================================================================================
; Description ...: Shows how to use pipe functions to read the output from a console operation
; Author ........: Paul Campbell (PaulIA)
; Notes .........: This script MUST be run in SciTE in order to see the results
; ===============================================================================================================================
; ===============================================================================================================================
; Main
; ===============================================================================================================================
ExecuteCmd("cmd.exe /c dir c:\windows")
;ExecuteCmd("ping https://autoit.de/www.autoit.com")
; ===============================================================================================================================
; Execute a command and display the results
; ===============================================================================================================================
Func ExecuteCmd($sCmd)
Local $iBytes, $sData, $hReadPipe, $hWritePipe, $tBuffer, $tProcess, $tSecurity, $tStartup
; Set up security attributes
$tSecurity = DllStructCreate($tagSECURITY_ATTRIBUTES)
DllStructSetData($tSecurity, "Length" , DllStructGetSize($tSecurity))
DllStructSetData($tSecurity, "InheritHandle", True)
; Create a pipe for the child process's STDOUT
_Pipe_CreatePipe($hReadPipe, $hWritePipe, $tSecurity)
; Create child process
$tProcess = DllStructCreate($tagPROCESS_INFORMATION)
$tStartup = DllStructCreate($tagSTARTUPINFO)
DllStructSetData($tStartup, "Size" , DllStructGetSize($tStartup))
DllStructSetData($tStartup, "Flags" , BitOR($STARTF_USESTDHANDLES, $STARTF_USESHOWWINDOW))
DllStructSetData($tStartup, "StdOutput", $hWritePipe)
DllStructSetData($tStartup, "StdError" , $hWritePipe)
_API_CreateProcess("", $sCmd, 0, 0, True, 0, 0, "", DllStructGetPtr($tStartup), DllStructGetPtr($tProcess))
_API_CloseHandle(DllStructGetData($tProcess, "hProcess"))
_API_CloseHandle(DllStructGetData($tProcess, "hThread" ))
; Close the write end of the pipe before reading from the read end of the pipe
_API_CloseHandle($hWritePipe)
; Read data from the child process
$tBuffer = DllStructCreate("char Text[4096]")
while 1
_API_ReadFile($hReadPipe, DllStructGetPtr($tBuffer), 4096, $iBytes)
if $iBytes = 0 then ExitLoop
$sData = StringLeft(DllStructGetData($tBuffer, "Text"), $iBytes)
$sData = StringReplace($sData, @CR & @CR, @CR)
ConsoleWrite($sData)
wend
EndFunc
Ich bekomme folgende Fehlermeldung:
>Running:3.2.2.0:C:\Programme\AutoIt3\autoit3.exe "C:\Programme\AutoIt3\Auto3Lib\Pipes\Console.au3"
C:\Programme\AutoIt3\Include\A3LPipes.au3 (233) : ==> AutoIt has encountered a fatal crash as a result of:
Unable to execute DLLCall.:
$aResult = DllCall("Kernel32.dll", "int", "CreatePipe", "ptr", DllStructGetPtr($tPipes, "Read"), "ptr", DllStructGetPtr($tPipes, "Write"), "ptr", $pSecurity, "uint", $iSize)
+>AutoIT3.exe ended.rc:0
Aber ich brauche hier auch keine Lösung, denn ich weiß momentan gar nicht wie ich das hier einsetzen könnte.... Ich wollte einfach nur meine kleine Erfahrung hiermit zum Besten geben.....
Hallo,
da wir im Geschäft noch mit einer DOS-Auftragsbearbeitung arbeiten, und ich schon viele Schnittstellen erstellt habe, interessiert mich dieses Thema auch immer wieder.
Aber ich denke auch nicht dass es eine Möglichkeit gibt Daten zurück an das DOS-Programm zu schicken. In einer Lösung konnte ich das DOS-Programm dazu anhalten nach einer Datei 'Ausschau' zu halten, welche von AutoIT erstellt wurde. Das ist aber dann eine 'normale' Import-Funktion.
Wenn es nur darum geht eine Meldung auszugeben, so kann ja vielleicht einfach ein Fenster davor gesetzt werden. Ein Screenshot-Skript (siehe hier im Forum) bei der Markierung macht das ja ganz pfiffig.
Viele Grüße
Carsten
Hallo,
mir ist es egal ob im Forum Werbung erscheint oder nicht und darauf möchte ich auch gar nicht eingehen.
Mit der Art und Weise wie es gerade hier gehandhabt wird, kann ich gut leben - und ich klicke sie auch ab und zu an.
Was ich nicht so gut finde, ist wenn die Art und Weise Kunden zu 'finden' nicht ganz sauber ist. Das ist gerade leider bei der 'Verwandschaftswerbung' der Fall.
1. Nur ganz klein unten steht was man zu bezahlen hat (schnell überlesen)
2. Der Eurobetrag ist ausgeschrieben und nicht als Zahl (Verschleierung)
3. Der Rechnungseinzug erfolgt über die Schweiz
4. Firmensitz ist im Norden (Belgien, Luxemburg oder so)
Nett ausgesprochen halten sich die Werbetreibende hier nicht an den geschäftlichen Anstand von 'Treu und Glauben'.
Aber wahrscheinlich kann das Forum keinen Einfluss auf die Auswahl der Werbung nehmen.
Falls dieses Niveau der Werbung jedoch zukünftig bestehen bleibt, würde ich mich gegen Werbung in diesem Forum aussprechen.
Viele Grüsse
Carsten
P.S: Um es hier vielleicht nochmals deutlich zu sagen: Ich will keinem hier im Forum ans Bein pinkeln. Mich stört die Art des Kundenfangs der Werbung und dafür kann hier (hoffentlich) keiner was. Das ist eine freie Meinungsäußerung von mir.
Hallo,
ich habe ein automatisches Login in dieses Forum und das war heute - warum auch immer - nicht mehr aktiv. Dummerweiser vergisst man sein Passwort bei seltener Benutzung (Nachteil der Bequemlichkeit....., gilt auch für gespeicherte Telefonnummern!)
Die Anfragen nach meinem Passwort wurden aber leider nicht ausgeführt. Habe ich einen Fehler gemacht oder ist das normal *grins*
Na ja, jedenfalls konnte ich mein Passwort in den Firefox-Einstellungen nochmals nachschlagen. Mein Problem hat sich gelöst, aber vielleicht ist ja auch eine Aktion der Forum-Betreuung notwendig....
Grüsse
Carsten
P.S: Vielleicht hat auch 'NoScript' bei mir geblockt, fällt mir gerade ein - habe ich nicht getestet.
Hallo Mega,
ach tatsächlich, der Start-Aufruf über die Win-Taste oder Strg-Esc (es gibt keine Ausrede *lacht*) in Verbindung mit den Pfeiltasten geht ja auch.
Hier kannst Du nachlesen wie Du die Win-Taste und die Rollen-Taste vertauschen kannst. Vielleicht hilft dir das für einen Test?
http://www.pcwelt.de/public/Scancode.HTML
Ob sich der Aufwand allerdings lohnt, ein wasserdichtes System über autoit zu erhalten .....???
Viele Grüße
Carsten
@mega:
nicht schlecht, das Tool würde mir erlauben trotz Tastatur/Maus-Sperre noch AutoIt-Scripte auszuführen. Der Mimlock98 blockt selbst controlsend-Aufrufe.
Leider gibt es aber hier eine Lücke: Die Windows-Tasten (Win-E für Explorer bzw. Win-R für 'Ausführen' sind nicht geblockt. Man kann sie zwar schlecht bedienen, weil Tab, Esc gesperrt sind, aber ich habe es geschafft dennoch Daten zu löschen. Ggf. könnte man auch von einem Stick ein 'Abschußprogramm' aufrufen. (Programmiert in AutoIt
)
Aber für eine Kindersicherung sollte es allemal genügen.
Viele Grüße
Carsten
Hallo,
ich benutze schon seit Jahren 'mimlock98' - und das nicht nur für Kleinkinder :-). Es hat mit AutoIt nichts zu tun, aber ist einfach und sicher. Maus und Tastatur sind gesperrt (inkl. Strg-Alt-Entf!). Das Passwort kann ja kurz sein, damit es schneller geht zum entsperren.
Der Aufruf per Hotkey über AutoIt sollte einfach machbar sein.
Vielleicht ist das eine einfache, bereits fertige Lösung für Deine Aufgabe.
Viele Grüße
P.S: Das Programm ist Freeware und über Suchmaschinen zu finden.
Ok, ok, ich war zu schnell - und habe es selbst gelöst.....
Die 'alte' Au3Info.exe zeigt auch ein ganz anderes Bild. Ich benutze einfach 'button10'.
.... dass sich auch immer was ändern muss am Computer ..... kann den nicht einfach mal alles so bleiben wie es immer war?.... *lacht*
Viele Grüße
Carsten
Hallo,
Ich möchte per 'ControlSend' auf einen Knopf zugreifen. Leider ist Class nicht eindeutig. In der Au3Info.exe der Beta 3.2.3.2 gibt es noch zusätzlich 'Instance'.
Wie kann ich darauf zugreifen?
Konkretes Beispiel in der Anlage.
Vielen Dank
viele Grüße
Carsten