Como alterar a unidade em um link simbólico?

0

Um dos computadores caiu em fumaça e eu conectei o HD a um adaptador USB para extrair todos os dados do usuário.

O drive USB aparece como Drive G: mas todos os links simbólicos apontam para a unidade original C: então quando eu copio todos os arquivos e sigo os links simbólicos, acabo copiando os dados da minha própria unidade C:

Existe um comando (ou forma) para alterar todos os links simbólicos para outra unidade? Exemplo, alterando o link simbólico C:\Users\Administrator\fileX.y para apontar para G:\Users\Administrator\fileX.y em vez disso?

    
por Max Kielland 01.10.2018 / 17:25

2 respostas

1

Eu não acho que se pode modificar um link simbólico, apenas recriá-lo. Isso exigirá a gravação de um script ou programa para verificar o disco e recriar os links simbólicos.

Aqui está uma ideia que pode ser mais simples: Crie uma máquina virtual e defina essa unidade física G: como seu disco C :.

Tanto o VMware quanto o VirtualBox suportam discos físicos / brutos:

por 01.10.2018 / 19:23
0

Em vez de tentar modificar todos os seus links, você pode usar robocopy em um prompt de comando para copiar o link simbólico em vez de seu destino.

ROBOCOPY source\path destination\path /E /SL

Este comando copiará recursivamente todos os diretórios e arquivos da sua origem para o seu destino ( /E ) e, em vez de copiar o destino do seu link simbólico, copiará o próprio link ( /SL )

Você pode listar todos os seus links e alvos simbólicos com o powershell. Essa resposta no StackExchange mostra como.

dir 'Path\to\examine' -Recurse -Force | ?{$_.LinkType} | Select FullName,LinkType,Target

Você pode substituir os links existentes também usando o powershell.

New-Item -ItemType SymbolicLink -Path "Symbolic\Link\Path" -Target "New\Target\For\Link" -Force

Assim, um script para modificar todos os links em uma pasta seria assim:

$directory = 'Path\to\your\links'
$links = dir '$directory' -Force | ?{$_.LinkType}
foreach ($link in $links)  
{
    $target = $link.Target.Replace('C:\','G:\')
    $path = $link.FullName
    New-Item -ItemType SymbolicLink -Path "$path" -Target "$target" -Force
}
dir '$directory' -Force | ?{$_.LinkType} | Format-Table FullName,Target

Certifique-se de modificar o valor $directory e executá-lo em um prompt do powershell admin. Você pode adicionar o -Recurse flag ao comando dir para procurar em subpastas também.

    
por 01.10.2018 / 18:28