Symbolische links einer Ordnerstruktur
ich möchte von einer Ordnerstruktur von jedem einzelnen Unterordner einen symbolischen Link erstellen lassen.
wie kann ich das am einfachsten automatisieren?
wie kann ich das am einfachsten automatisieren?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 497234
Url: https://administrator.de/contentid/497234
Ausgedruckt am: 22.11.2024 um 09:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo erstmal...
Powershell z.B. Wobei es noch auf das Zielsystem ankommt.
Die PS Version kann man auch einfach festellen. Entweder nutzt du dann die neue Funktion oder die alte.
Bei Windows 10 würde auch nur New-Item reichen.
mfg Crusher
Powershell z.B. Wobei es noch auf das Zielsystem ankommt.
New-Item -Path $link -ItemType SymbolicLink -Value $ziel
oder
$command = "cmd /c mklink /d"
invoke-expression "$command ""$link"" ""$ziel"""
Die PS Version kann man auch einfach festellen. Entweder nutzt du dann die neue Funktion oder die alte.
Bei Windows 10 würde auch nur New-Item reichen.
mfg Crusher
Habe im moment wenig Zeit.
Natürlich ist es nur ein Fragment und $link steht im Raum. Du kannst mit PS einfach Child-Items auslesen und die Werte dann so manipulieren dass du nur das hast, was du für die Verküpfungen brauchst.
Da fehlt wie gesagt noch einiges. Dann würde es aber rasch alle Links automatisch erstellen.
Natürlich ist es nur ein Fragment und $link steht im Raum. Du kannst mit PS einfach Child-Items auslesen und die Werte dann so manipulieren dass du nur das hast, was du für die Verküpfungen brauchst.
Da fehlt wie gesagt noch einiges. Dann würde es aber rasch alle Links automatisch erstellen.
Quelle ist alles im Laufwerk I:\
Ziel ist G:\test
Es liest alle Ordner (IsContainer) und nimmt den FullName (Pfad + Name) - hier nur kein Dateiname- als Wert für den Link.
Das Ziel wird durch Pfad + den jeweilige Ordnername ergänzt. Fertig.
Ziel ist G:\test
Es liest alle Ordner (IsContainer) und nimmt den FullName (Pfad + Name) - hier nur kein Dateiname- als Wert für den Link.
Das Ziel wird durch Pfad + den jeweilige Ordnername ergänzt. Fertig.
$quelle="I:\"
$zielpfad = "G:\test\"
Get-ChildItem $quelle | Where-Object {$_.PSIsContainer } |
Foreach-Object {
$ziel = $zielpfad + $_.Name
New-Item -Path $ziel -ItemType SymbolicLink -Value $_.FullName
}
Moin,
Warum einfach, wenn's auch kompliziert geht?
Wobei ich bei der Frage eher an
gedacht habe.
Liebe Grüße
Erik
Zitat von @Crusher79:
$quelle="I:\"
> $zielpfad = "G:\test\"
>
> Get-ChildItem $quelle | Where-Object {$_.PSIsContainer } |
> Foreach-Object {
>
> $ziel = $zielpfad + $_.Name
>
> New-Item -Path $ziel -ItemType SymbolicLink -Value $_.FullName
>
> }
>
>
Warum einfach, wenn's auch kompliziert geht?
get-childitem $quelle -directory | %{new-item -path "$zielpfad$_.Name" -itemtype symboliclink -value $_.fullname}
Wobei ich bei der Frage eher an
ls -d | while read -r line; do ln $line /mnt/wherever/$line; done
gedacht habe.
Liebe Grüße
Erik
Warum einfach, wenn's auch kompliziert geht?
Ja dann aber auch funktionierend 😁 "$zielpfad$_.Name"
Dat funktioniert nicht, wenn so dann braucht es "$zielpfad$($_.Name)"
@Eric: stimmt schon.
Aber was sollen %, ? oder gci bedeuten? So hat man zumindest was zum nach googlen. Sonst müsste du immer mit Get-Alias oder Get-Member einleiten.
Vermuitlich wird es aber bei vielen erstmal bei Copy&Paste bleiben. Oder man kombiniert mit guten alten DOS Befehlen, die einen Strings um die Ohren hauen statt Objekte.
Aber was sollen %, ? oder gci bedeuten? So hat man zumindest was zum nach googlen. Sonst müsste du immer mit Get-Alias oder Get-Member einleiten.
Vermuitlich wird es aber bei vielen erstmal bei Copy&Paste bleiben. Oder man kombiniert mit guten alten DOS Befehlen, die einen Strings um die Ohren hauen statt Objekte.
Moin,
Nee, das .name war falsch:
Liebe Grüße
Erik
Zitat von @140913:
Warum einfach, wenn's auch kompliziert geht?
Ja dann aber auch funktionierend 😁 "$zielpfad$_.Name"
Dat funktioniert nicht, wenn so dann braucht es> "$zielpfad$($_.Name)"
>
Nee, das .name war falsch:
PS P:\> $zielpfad = "c:\test\"
PS P:\> $childs = get-childitem -directory
PS P:\> $childs | %{"$zielpfad$_.name"}
c:\test\downloads.name
c:\test\ucs.name
c:\test\AD-Umstellung.name
c:\test\notebook.name
c:\test\copy.name
c:\test\p.name
c:\test\ps1.name
C:\test\isos.name
c:\test\stick.name
c:\test\vba.name
c:\test\scan.name
c:\test\test.name
PS P:\> $childs | %{"$zielpfad$_"}
c:\test\downloads
c:\test\ucs
c:\test\AD-Umstellung
c:\test\notebook
c:\test\copy
c:\test\ldap
c:\test\p
c:\test\ps1
c:\test\isos
c:\test\stick
c:\test\vba
c:\test\scan
c:\test\test
Liebe Grüße
Erik
Vorsicht damit, das kann je nach System andere Ergebnisse liefern da sich der Default-Rückgabewert des Objects erstens nach OS unterscheiden kann zweitens sich auch ändern lässt, siehe Beispiel
https://tio.run/##K8gvTy0qzkjNyfn/31BPz9BAoUa1WqkktbhESaFGITc7JbNIAcyNV4 ...