DAU0815 1 Geschrieben 2. Juni 2018 Melden Teilen Geschrieben 2. Juni 2018 Hallo zusammen, benötige eine Batchdatei, die die Pfad-Eigenschaften diverser Links (.lnk) in einem Ordern mit Unterverzeichnissen durchsucht und die Pfadangabe partiell ersetzt. Wie z.B. SUCHEN und ERSETZEN unter sonstigen Windosanwendungen. so sollte aus C:\Daten\B\Braun\180213 folgendes werden C:\Daten\G\Gelb\180213 Vielen Dank schon mal vorab! Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 2. Juni 2018 Melden Teilen Geschrieben 2. Juni 2018 Moin, sollen wir jetzt für Dich so eine Batch schreiben oder suchen oder was ist Deine konkrete Frage? Zitieren Link zu diesem Kommentar
DAU0815 1 Geschrieben 2. Juni 2018 Autor Melden Teilen Geschrieben 2. Juni 2018 Wenn du weißt wie es geht kannst du mir die Quelle nennen, oder du hast schon etwas "Fertiges". Von mir aus auch gegen Bezahlung oder Spende an Forum oder... Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 2. Juni 2018 Melden Teilen Geschrieben 2. Juni 2018 Hmmm .... das heißt also, dass Du noch nicht woanders danach gesucht hast, oder? Ich hatte den Zweck dieses Forum eher so verstanden, dass man bei konreten Problemen, die man mit einem Script hat, dass man selbst geschreiben hat oder gerade schreibt, fragen kann, wie man diese Probleme beseitigt oder umgeht. Ich habe so etwas bisher noch nie gebraucht und deshalb auch nichts Fertiges da und auch noch nie danach gesucht. Aber ich scripte ganz gern und wenn ich von Dir etwas sehen würde, könnte ich versuchen, es zu verbessern oder debuggen. Zitieren Link zu diesem Kommentar
DAU0815 1 Geschrieben 2. Juni 2018 Autor Melden Teilen Geschrieben 2. Juni 2018 Mein Problem ist, dass ich die Datei .lnk nicht durch ein Script öffnen kann. Sie wird immer ausgeführt. Daran scheitert es schon... Tut mir Leid, dass ich nichts liefern kann, dann muss ich wohl wo anders suchen Hallo BOfH_666 kannst du zumindest nen Tipp geben, nach was ich suchen muss. Bin leider kein IT-Brain wie Du. :-/ (gehe ich zumindest daovnaus, was man so alles findet unter BOfH_666 ;-) Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 2. Juni 2018 Melden Teilen Geschrieben 2. Juni 2018 OK, dann also ein paar generelle Tipps. Ich würde empfehlen nicht nach Batch oder cmd zu suchen sondern Powershell. Batch / cmd sind ziemlich obsolet und für viele Aufgaben nicht funktionsreich genug. Mit Powershell bist Du viel besser dran. Dann würde ich vermulich auch eher in english suchen. Man bekommt einfach mehr Ergebnisse - also sowas wie "change target of windows *.lnk file". Ich erhalte da schon mit dem erstn Treffer etwas Vielversprechendes. Alle Foren, die ich kenne, lassen Dich, ohne dass Du wenigstens einen kleinen Schnipsel eigenen Code lieferst, tendenziell eher wegtreten. Solltest Du das evtl. beruflich benötigen, würde ich Dir dringend empfehlen, die die Grundlagen von Powershell anzueignen. In der Windows-Welt kommt man sowieso nicht mehr drumherum und es schadet nie etwas Neues zu lernen ... auch wenn man es vielleicht seltener braucht. Zitieren Link zu diesem Kommentar
DAU0815 1 Geschrieben 2. Juni 2018 Autor Melden Teilen Geschrieben 2. Juni 2018 Ok SUPER (und DANKE), habe nun PowerShell aktiviert und etwas gefunden. Doch leider macht das Programm nicht was es soll: #modify variables accordingly $fileName ="*.lnk" $folder = "P:\" [string]$from = "\B\Braun\" [string]$to = "\G\Gelb\" $list = Get-ChildItem -Path $folder -Filter $fileName -Recurse | Where-Object { $_.Attributes -ne "Directory"} | select -ExpandProperty FullName $obj = New-Object -ComObject WScript.Shell ForEach($lnk in $list) { $obj = New-Object -ComObject WScript.Shell $link = $obj.CreateShortcut($lnk) [string]$path = $link.TargetPath [string]$path = [string]$path.Replace($from.tostring(),$to.ToString()) #If you need workingdirectory change please uncomment the below line. #$link.WorkingDirectory = [string]$WorkingDirectory.Replace($from.tostring(),$to.ToString()) $link.TargetPath = [string]$path $link.Save() } Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 2. Juni 2018 Melden Teilen Geschrieben 2. Juni 2018 (bearbeitet) Ganz schön frech, einfach in einem anderen Forum zu fragen. Soziale Kompetenz ist scheinbar ein knappes Gut heutzutage. Bitte formatiere Deinen Code als Code hier im Forum. "... macht nicht, was es soll ... " ist keine valide Fehlerbeschreibung. Wir kennen Dein System nicht und können Deinen Bildschirm nicht shen. Gibt es eine Fehlermeldung? Wenn ja - hier posten, bitte! (idealerweise auch als code formatiert) Wenn es keine Fehlermeldung gibt, woran erkennst Du dass es nicht das tut, was es soll? bearbeitet 2. Juni 2018 von BOfH_666 Zitieren Link zu diesem Kommentar
DAU0815 1 Geschrieben 2. Juni 2018 Autor Melden Teilen Geschrieben 2. Juni 2018 Verstehe nicht ganz, was der Kommentar soll "Soziale Kompetenz ist scheinbar ein knappes Gut heutzutage" wegen anderem Forum. Doch ich programmieren diverse Maschinen in Siemens 840D, ... PowerShell ist Neuland. Ich war froh, dass ich in der CMD klar kam und hier einiges geregelt habe. Alles kann man halt nicht können. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 2. Juni 2018 Melden Teilen Geschrieben 2. Juni 2018 Na was ist denn nun der Fehler? Ohne Fehlermeldung oder wenigstens eine Erklärung, was genau nicht funktioniert, kann Dir keiner helfen. Zitieren Link zu diesem Kommentar
DAU0815 1 Geschrieben 2. Juni 2018 Autor Melden Teilen Geschrieben 2. Juni 2018 (bearbeitet) Die Datei läuft durch, macht jedoch keine Veränderung in den Eigenschaften (Prüfung mittels rechter Maustaste). Tut mir Leid für die Störung, ich setzte am Montag unseren ITler dran. :-/ bearbeitet 2. Juni 2018 von DAU0815 interner Pfad Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 2. Juni 2018 Melden Teilen Geschrieben 2. Juni 2018 Du störst nicht - dafür ist das Forum ja da. Wenn ich keinen Spass dran hätte, wär ich nicht mehr hier und würde nicht mehr antworten. ich werd ja nicht gezwungen. Wenn das Script nicht das erwartete Ergebnis liefert, muss man eben rauskriegen, warum nicht. Gib doch einfach einmal vor der Änderung und einmal nach der Änderung die Eigenschaft als text aus, um die es Dir geht. Also so: $fileName ="*.lnk" $folder = "P:\" [string]$from = "\B\Braun\" [string]$to = "\G\Gelb\" $list = Get-ChildItem -Path $folder -Filter $fileName -Recurse | Where-Object { $_.Attributes -ne "Directory"} | Select-Object -ExpandProperty FullName ForEach($lnk in $list) { $obj = New-Object -ComObject WScript.Shell $link = $obj.CreateShortcut($lnk) [string]$path = $link.TargetPath Write-Host "Pfad vorher: '$($path)'" [string]$path = [string]$path.Replace($from.tostring(),$to.ToString()) Write-Host "Pfad nachher: '$($path)'" $link.TargetPath = [string]$path $link.Save() } Zitieren Link zu diesem Kommentar
DAU0815 1 Geschrieben 2. Juni 2018 Autor Melden Teilen Geschrieben 2. Juni 2018 Habe es hinbekommen. Alle Links wurden KORREKT umgeschrieben. Zu deinem Kommentar nochmals kurz: Wollte nicht in diversen Foren "rumfragen" doch da ich bin hier echt neu auf dem Gebiet und eher in Programmierung von ROBOTERN, LASER, MEHR-ACHS-MASCHINEN, ... tätig. Meinen Ehrgeiz hat es jedenfalls gepackt - aufgeben war noch nie meine Sache. Schönes Wochenende noch! Daumen hoch! Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 2. Juni 2018 Melden Teilen Geschrieben 2. Juni 2018 Dann lass uns doch bitte an Deiner Lösung teilhaben. Wenn wiedermal jemand danach sucht, wüsste er oder sie bestimmt gerne, was die Lösung war. Zitieren Link zu diesem Kommentar
DAU0815 1 Geschrieben 2. Juni 2018 Autor Melden Teilen Geschrieben 2. Juni 2018 #modify variables accordingly # $fileName ="*.lnk" $folder = "M:\Daten" # [string]$from = "\B\Braun\" [string]$to = "\G\Gelb\" # $list = Get-ChildItem -Path $folder -Filter $fileName -Recurse | Where-Object { $_.Attributes -ne "Directory"} | select -ExpandProperty FullName $obj = New-Object -ComObject WScript.Shell ForEach($lnk in $list) { $obj = New-Object -ComObject WScript.Shell $link = $obj.CreateShortcut($lnk) [string]$path = $link.TargetPath # Write-Host " Pfad vorher: '$($path)'" [string]$path = [string]$path.Replace($from.tostring(),$to.ToString()) # Write-Host "Pfad nachher: '$($path)'" #If you need workingdirectory change please uncomment the below line. #$link.WorkingDirectory = [string]$WorkingDirectory.Replace($from.tostring(),$to.ToString()) $link.TargetPath = [string]$path $link.Save() } 1 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.