Jump to content

Datenabgleich.


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Guten Morgen Leute!

 

Also ich soll heute einen Datenabgleich bauen, der auf das Datum der Datei sowie den Namen vergleicht.

Wenn eine gleiche Datei Vorhanden ist soll er abbrechen.

 

$src= C:\Bentzer\Daten1
$dst= Z:\Daten

if ($src in $dst)

 

jetzt stellst sich mir die Frage wie am Besten das ein Baue ? Muss ich die If Schleife doch in eine Foreach umwandeln ?

oder reicht eine If abfrage für das Script ?

 

Danke

 

lg

Link zu diesem Kommentar

Hi

 

du musst beides einsetzen. erstmal durchläufst du die schleife mit den einzelnen Dateien und vergleicht diese dann mit einer if abfrage.

 

Gruss Martin

 

PS ich habe deine einträge letzte woche schon gesehen und ich finde das dieses Forum nicht dazu da ist, dass du so lange fragst bis du ein fertiges script hast. Wir helfen alle gerne!

Link zu diesem Kommentar

Hallo magman

 

 

Danke erstmals für deine Hilfe.

 

Mir geht es vorallem darum wenn ich mal so ein Beispiel Script habe wo diese Abgleichung eingebaut ist werde ich es auch besser verstehen.

Nur geht mir manchmal das Wie ab ? Hab eine Idee im Kopf wie es funktionieren kann weiß aber nicht wie ich es umsetze ?

Bin am lesen von Power in Action und google auch wie ein Wilder.

Nur möchte ich dieses Forum nutzen um mich weiterzubilden. Und da gibt es keinen besseren Ort als dieses Forum hier wo lauter Experten sind.

 

Ich brauche einfach mal das Erlebnis das es funktioniert und dann erlege ich mir die schleife und werde Sehn wie es funktioniert.

Damit ich das Schleifen System verstehe.

 

:)

Link zu diesem Kommentar

Reichte mein fast fertiges Script nicht um zu verstehen?

 

Schleife:

foreach($file in (Get-ChildItem $src -Recurse -include *.txt,*.doc,*.ppt)){

}

 

vergleich:

if(!(test-path $dstfile)){

}

 

Powershell 101: IF .. Else - Flaphead on TechNet - Site Home - TechNet Blogs

Using the Foreach-Object Cmdlet

 

Um Grundlagen zu lernen ist ein Forum nicht optimal. Bei konkreten Fragen helfen wir alle gerne.

Link zu diesem Kommentar

#Quelle
$src = "C:\filetyp"
#Ziel
$dst = "C:\filetyp1"

#Schleife über Dateisystem.
$abc = foreach($file in (Get-ChildItem $src -Recurse -include *.txt,*.doc,*.ppt)){

#Dateiname im Ziel
$dstfile = $file.FullName.replace("$src","$dst")

#Ordner im Ziel
$dstfolder = $dstfile.split('\')[0..($dstfile.split('\').length-2)] -join '\'




#Testen ob diese Datei NICHT existiert
if(!(test-path $dstfile)){

	#Testen ob ein Ordner existiert
	if(!(test-path $dstfolder)){

		#Wenn er nicht existiert, dann an anlegen
		new-item $dstfolder -type directory -recurse

	}so

	#Wenn die Datei nicht existiert von der Quelle kopieren
	copy-item $file.FullName $dstfolder

}
}


#$event = "Das Script mit protokliert"

#(get-date).toString() + $event >> c:\log.log

#$abc | Select-String "Pfad:$(MyInvocationName)"

 

Also: Bei der If Abfrage fehlt mir jetzt nur noch das wenn eine Datei Vorhanden ist soll er mit dem Kopiervorgang abbrechen ? und in ein Log file schreiben. Müsste ich die erste If Abfrage bearbeiten ? Die

 if(!(test-path $dstfile)) 

erweitern oder ?

 

Also dass ich mir hier noch einen Match Operator oder sowas einbaue ?

 

Und das ganze in ein Log file rein zu tun hab ich mir gedacht ich baue :

 

$event = "Das Script mit protokliert"
(get-date).toString() + $event >> c:\log.log

 

Aber wie gesagt funktioniert mir das auch nicht so ganz.

 

Und jetzt kommen wir zur Masterfrage wo ich noch komplett Plan soll bin.

 

Wie schaffe ich es die Dateien die Kopiert worden sind in einen String zu speichern ?

Im String soll der Dateipfad stehen ?

 

Das sind die Dinge die mich noch beschäftigen :)

 

Bin aber der Lösung noch fern.

 

Danke nochmals für eure Hilfe

Link zu diesem Kommentar

Simple IF, Else
$a = "Powershell"
IF ($a -eq "PowerShell")
{
"Statement is True"
}
ELSE
{
"Statement is False"
}

 

hab mir die links angeschaut.

 

Frage zu dieser Schleife

 

Wenn ich jetzt für mein Beispiel hernehme:


IF ($src -eq $dsc)
{
"Statement is True"
}
ELSE
{
"Statement is False"

 

Muss ich jetzt in dem ersten Zeig das mit dem ERROR Code einbauen damit er mir aus der Schleife spring oder bin am Holzweg ?

Link zu diesem Kommentar

Guten Morgen Gemeinde.

 

Ich brauche ein Sricpt für meinen Arbeitgeber.

Heute sollte ich fertig werden.

 

Leider steh ich noch immer vor den selben Problemen.

 

#Quelle
$src = "C:\filetyp"
#Ziel
$dst = "C:\filetyp1"

#Schleife über Dateisystem.
$abc = foreach($file in (Get-ChildItem $src -Recurse -include *.txt,*.doc,*.ppt)){

#Dateiname im Ziel
$dstfile = $file.FullName.replace("$src","$dst")

#Ordner im Ziel
$dstfolder = $dstfile.split('\')[0..($dstfile.split('\').length-2)] -join '\'




#Testen ob diese Datei NICHT existiert
if(!(test-path $dstfile)){
	break

	#Testen ob ein Ordner existiert
	if(!(test-path $dstfolder)){

		#Wenn er nicht existiert, dann an anlegen
		new-item $dstfolder -type directory -recurse

	}so

	#Wenn die Datei nicht existiert von der Quelle kopieren
	copy-item $file.FullName $dstfolder

}
}

 

::::: Also die Abfrage mit dem Error Message fehlt mir noch, sprich wenn eine Datei vorhanden ist soll er abbrechen.

Muss ich ein Break oder ein Stop in die If Abfrage einbauen ?

2tens soll ich die Daten die Kopiert würden in einen String mit schreiben, sprich also den Pfad von wo die Datei herkam.

Wie kann man dieses Problem Stellung lösen.

 

Bitte um Hilfe

 

Danke

Link zu diesem Kommentar

@OT Arbeitgeber hin oder her, ein ernsthaftes Bemühen erkenne ich nicht im Ansatz.

Mich stört es, Dukel & co reißt sich hier den A... auf und macht sich hier mehr Arbeit als du - Obwohl es dein Bier ist! Das nennt man auch Schmarotzen.

 

 

@Topic

Wenn du eine If-Else hast, was willst du dann mit dem Break ?

Du kannst dir auch eine Switch aufbauen...und dort in den einzelnen Abschnitten mit nem Break rausspringen. (Google "Powershell Switch")

Warum hast du ein Break an erster Stelle ? ... und wo das so ist, sollte wohl ein Else stehen^^

Link zu diesem Kommentar

Sorry das mir das ganze Neu ist.

 

Deswegen möchte ich ja das Sricpt fertig bekommen damit ich darauf aufbauen kann.

 

Wenn ich mal eines Fertig ist sollte der Aha-effekt kommen.

 

Nur ist es schwieig das innerhalb Kuzer Zeit zu lernen.

 

Zu deinen Anschuldigungen das ich zu wenig Einsatz zeige kann ich nichts abgewinnen.

Ich kann nicht verstehen wieso du dir dann die Mühe machst mich schlecht hin zustellen.

Statt dessen hätten wir wahrscheinlich gemeinsam das Problem schon lange erledigt.

Wenn du mir nicht helfen willst warum gehst du dann in THread rein ?

Sorry das ich das Forum nutzen wollte um Informationen auszustauschen.

 

Und wenn sich keiner Bereit fühlt mir zu helfen ja dann is auch kein Problem.

 

Nur immer diese Belerungen intersieren mich nicht ?

Weil diese nix bringen.

 

Da merkt man wieder den Unterschied zur Linux Welt !!! Hier sind alle Freundlich und Hilfsbereit und keiner unterstellt dir was.

Ganz ehrlich gesagt verstehe ich dich nicht "PowershellAdmin"

du stellst dich hin als Guru und willst dein Wissen nicht teilen...

 

okay aber dann bitte lass es das du zu meine Thread dazu schreibst.

weil i freue mich jedesmal über eine Antwort und dann lese ich nur Belehrungsmassnahmen.

 

Ganz Ehrlich gesagt hat mir die Antwort jetzt Minuten gekostet die nicht nötig wären aber naja.....und ich lieber in der Powershell verbringe

Link zu diesem Kommentar
Sorry das mir das ganze Neu ist.

 

Deswegen möchte ich ja das Sricpt fertig bekommen damit ich darauf aufbauen kann.

 

Das ist doch kein Problem, du hast ihr umfassende Unterstützung und Hilfe erhalten, aber du erwartest fertige Lösungen.

Zu deinen Anschuldigungen das ich zu wenig Einsatz zeige kann ich nichts abgewinnen.

Ich kann nicht verstehen wieso du dir dann die Mühe machst mich schlecht hin zustellen.

Statt dessen hätten wir wahrscheinlich gemeinsam das Problem schon lange erledigt.

Wenn du mir nicht helfen willst warum gehst du dann in THread rein ?

Sorry das ich das Forum nutzen wollte um Informationen auszustauschen.

 

Und wenn sich keiner Bereit fühlt mir zu helfen ja dann is auch kein Problem.

 

Nur immer diese Belerungen intersieren mich nicht ?

Weil diese nix bringen.

 

a) Habe ich dir geholfen

b) Wenn du keine Hilfe -dazu gehört auch Kritik- willst, dann ruf nicht um Hilfe. Strukturiertes Arbeiten und Konzepte gehören in die IT wies Blut zum Schlachten. Basta.

 

 

Da merkt man wieder den Unterschied zur Linux Welt !!! Hier sind alle Freundlich und Hilfsbereit und keiner unterstellt dir was.

Ganz ehrlich gesagt verstehe ich dich nicht "PowershellAdmin"

du stellst dich hin als Guru und willst dein Wissen nicht teilen...

 

okay aber dann bitte lass es das du zu meine Thread dazu schreibst.

 

Ganz Ehrlich gesagt hat mir die Antwort jetzt Minuten gekostet die nicht nötig wären aber naja.....und ich lieber in der Powershell verbringe

Ich bin weder ein Guru, noch will ich nicht helfen - Du willst die Ganze Zeit fertige Lösungen und bist zu faul um Google zu nutzen - Das ist schon argh wenig Eigeninitiative.

Wenn ich mir den Threadverlauf und deine dazugehörige Antwort durchlese, dann Frage ich mich wer hier NICHT "FREUNDLICH" und undankbar über die hier gezeigte "Hilfsbereitschaft" ist.

 

Grüße Admin

 

edit: Sry für den schroffen Ton, aber lieber direkt, als durch die Blume.

Link zu diesem Kommentar

Okay

 

Also ich bedanke mich bei jeder Antwort !

 

Nur zur Info:

 

Ich habe schon erzählt das mir das BuchPowershell in Action zu gelegt habe.

Und googlen tue ich auch ständig

 

Aber es ist meine erste Powershell Erfahrung !

 

Eine Fertig lösung , natürlich suche ich danach damit ich endlich das Sripct verstehe.

 

An Hand dieses Scriptes gibt es sicher viel selbst erkenntnis.

Vom Aufbau her, und wie man ein Sripct schreibt.

Es gibt keine bessere Möglichkeiten als von Erfahrenen Powershell User zu lernen und das möchte ich machen.

 

Vorallem weil es mein erstes Script ist wollte ich Hilfe von diesem Forum beziehen.

 

Falls du denkst ich werde das mit weiteren Scripten machen denkst du leider Falsch. Ich muss es selbst können und vorallem schneller werden, daher wir oft einen Zeitdruck haben.

 

Ich möchte nur auf diesem Fertigen Script dann aufbauen, daher sich meine ersten Paar Powershell aufgaben vorallem mit dem gleichen beschäftigen und mir dann das Script umschreiben kann.

Vorallem wäre es Perfekt zum Lernen, deswegen auch meine ständigen Hilfe Schreie daher ich anstehe mit meinen Wissen.

 

Vorallem ist sehr schwer richtige Beschreibungen zufinden die Dinge so erklären das man sie Versteht.

Wie gesagt es ist meine erste Object Sprache.

 

Ich hoffe wir haben das jetzt aus der Welt geschafft.

 

Vielleicht findest du noch den Anstoß mir zu Helfen wäre auch bereit eine kleine Gegenleistung für deine Dienste zu geben.

 

Danke nochmals

Link zu diesem Kommentar

Jetzt mal wieder ruhig Blut!

 

@Powershelladmin: wenn dir der Stil eines Users nicht gefällt, dann brauchst du den Thread ja nicht weiter zu lesen.

Faulheit etc. werfen wir uns gegenseitig in diesem Forum jedenfalls nicht vor! :mad:

 

 

@schreckinger: Warum verlangt dein Chef vor dir eine umfangreichere Skriptaufgabe in relativ kurzer Zeit zu Lösen, wenn dir das Werkzeug (Skriptingknowhow) noch gar nicht zur Verfügung steht?

Errorhandling oder der MatchOperator sind in einem Forum nur schwer zu erklären.

 

blub

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...