Jump to content

Batchdatei zur Änderung Link-Eigenschaften


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

Empfohlene Beiträge

Geschrieben

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!

Geschrieben

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. ;-)  :D

Geschrieben

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 ;-)

Geschrieben

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.

Geschrieben

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() 
  } 

Geschrieben (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 von BOfH_666
Geschrieben

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. :-) 

Geschrieben (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 von DAU0815
interner Pfad
Geschrieben

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. ;-):D

 

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() 
}

 

Geschrieben

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!

 

 

Geschrieben

#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() 

 

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...