Zum Inhalt springen

Hüsi

Mitglieder
  • Gesamte Inhalte

    1.300
  • Benutzer seit

  • Letzter Besuch

Beiträge von Hüsi

  1. nun hoff ich nur dass nicht doch irgendwo beide Verzeichnisse vorhanden sind und sich die Dateien in der falschen reihenfolge überschreiben..

    du könntest um das abzufangen nach einer zu erdenkenden logik zusätzliche if-abfragen in einander verschachteln. ggf. hilft auch ein logisches und (war bei batch-scripten das "&&" mein ich...

  2. Hallo ich habe keine Ahnung wie ich mich da rein arbeiten soll!

    Ich arbeite nebenbei und habe Familie und ich weiss nicht mal ob ich das C++ noch jemals wieder brauchen werde.

    Bereitschaft sich mit sowas auseinander zu setzen ist der Schlüssel zu allem. Ich denke mal, dass mehr schneller geholfen hätten, wenn selbige zu erkennen gewesen wäre und nicht nur ein Bittstellen.

    Aber da jetzt ja scheinbar alles so gemacht wurde, wie gewünscht und alles läuft, gibts ja keine Probleme mehr.:rolleyes:

  3. Wie erkennt das Programm die Version? Nach Datum oder grösse?

    nach dem kopieren ist die version.ini zweimal vorhanden, einmal im verzeichnis, elches kopiert werden soll und einmal auf dem stick... wenn hier gleichheit herrscht, wird nicht kopiert sondern nur, wenn die version im quellverzeichnis größer ist als im zielverzeichnis.

    wenn sich die version ändert, muss du im quellverzeichnis den inhalt der datei version.ini erhöhen

  4. doch ein wenig zeit gefunden:

    Code fürs die au3/exe:

    ;--- Einstelungen aus ini auslesen
    
    $SettingsFile = @ScriptDir&"\settings.ini"
    
    $SourceDirPath = IniRead ($SettingsFile,"settings","SourceDir","")
    
    $TargetDirRelPath = IniRead ($SettingsFile,"settings","TargetDirRelPath","")
    
    
    while 1
    
    	$Drives = DriveGetDrive("REMOVABLE")
    
    	;--- "Removeable" Device angeschlossen
    
    	if not @error then
    
    		for $i=1 to $Drives[0]
    
    			$TargetDirPath = $Drives[$i]&$TargetDirRelPath
    
    			;--- Bereits vorhandene Version auf Zieldatenträger
    
    			if FileExists ($TargetDirPath&"\Version.ini") then
    
    				$TargetVersion = IniRead ($TargetDirPath&"\Version.ini","version","Version","0")
    
    				$SourceVersion = IniRead ($SourceDirPath&"\Version.ini","version","Version","1") 
    
    				;---Version kleiner ->löschen und kopieren
    
    				if $TargetVersion < $SourceVersion Then
    
    					SplashTextOn ("","Achtung! "&@CRLF&@CRLF&"Kopieraktionen aktiv!",400,200,Default,Default,33,Default,20)
    
    					DirRemove ($TargetDirPath,1)
    
    					DirCopy ($SourceDirPath,$TargetDirPath)
    
    				Else
    
    					;---Versionen gleich, keine Aktion nötig
    
    					SplashOff()
    
    				EndIf
    
    			Else
    
    				;---Keine Version auf Zieldatenträger vorhanden, nur kopieren
    
    				SplashTextOn ("","Achtung! "&@CRLF&@CRLF&"Kopieraktionen aktiv!",400,200,Default,Default,33,Default,20)
    
    				DirCopy ($SourceDirPath,$TargetDirPath)
    
    			EndIf
    
    		Next
    
    	Else
    
    		;--- kein "Removeable" Device Angeschlossen
    
    		SplashOff()
    
    	EndIf
    
    WEnd
    
    
    zusätzlich brauchst du eine settings.ini im gleichen verzeichnis wie die exe...
    [settings]
    
    SourceDir = C:\tmp\USB_AutoFiller\SourceDir
    
    TargetDirRelPath = \TargetDir
    wobei sourceDir ans quellverzeichnis angepasst werden muss und TargetDirRelPath quasi den Ordnernamen auf den Sticks mit anführendem \ angibt sowie im obersten ordner des SourceDirs eine version.ini
    [version]
    
    Version = 1

    das ganze ist nur kurz getestet und sicherlich nicht der weisheit letzter schluss...

    Edit: bei änderung der Daten musst du dann in der version.ini nur die version erhöhen...

  5. im editor schreibst du das script, richtig.

    vom grundgedanken her würd ich das so machen

    1. endlosschleife erstellen (bspw. "while 1"..."wend")

    2. da zwischen dann auf die jeweiligen laufwerke testen mit if fileexists

    3. wenn entsprechend ein laufwerk exisitiert/gefunden wird, dann ggf noch prüfen, obs vom typ removeable (driveGetType) ist und anschließend deine kopieraktion starten.

    problem dabei: bei jedem schleifendurchlauf wird neu kopiert... also müsste man auf ggf. mit ner versionierung arbeiten...

    morgen könnt ich was grobes mal umsetzen (mit versionierung), damit du nen ansatz hast.... aber wenn du bis dahin schon was geschrieben hast, zeigs doch mal...

  6. prinzipiell könnte ich mir da was mit autoit oder ähnlichem vorstellen...

    auf dem server läuft ein programm in einer endlosschleife, dass alle laufwerksbuchstaben auf existenz checkt. wenn ein neues laufwerk angesteckt wird, wird dieses beim nächsten schleifendurchlauf erkannt und die entsprechende kopieraktion kann angestoßen werden (bei autoit könnte zusätzlich der typ des neuen mediums mit drivegetype überprüft werden auf removable)... das löschen des ordners, falls es den gibt sollte ja nich so das problem darstellen ;-)

    allerdings stellt sich mir noch eine andere frage: wie soll derjenige, der den stick einsteckt merken, dass das kopieren abgeschlossen ist?

  7. psexec wäre auch meine empfehlung gewesen. hilfe über psexec -?

    um eine batch auf einem remote-rechner auszuführen würde z.b. folgender code funktionieren:

    psexec \\rechnername_oder_ip -c -f batchdatei.bat

    falls du das ganze unter einem anderen user ausführen möchtest kannst du das ganze noch um die option -u Domäne\User erweitern. das dazugehörige passwort wird dann erfragt....

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...