Як змінити привід на символічне посилання?


0

На одному з комп’ютерів впав дим, і я підключив HD до USB-адаптера, щоб витягти всі дані користувача.

USB-накопичувач відображається як Диск G: але всі символьні посилання вказують на оригінальний диск C: тому коли я копіюю всі файли і переходжу до символічних посилань, я закінчую копіюванням даних із власного диска C:

Чи є команда (або спосіб) змінити всі символічні посилання на інший диск? Наприклад, замінюючи символічне посилання C:\Users\Administrator\fileX.yна G:\Users\Administrator\fileX.yвказівку?


Ні. Ви можете замінити символічні посилання по черзі, але я б просто створив резервну копію файлів оригінального диска C, і копія не дозволить переходити за символічними посиланнями.
LPChip

Просто для уточнення: ваші дані знаходяться на диску G. Ви копіюєте ці дані на диск C. Існують символічні посилання, які вказують на диск C, і ви хочете, щоб вони працювали належним чином після завдання копіювання. Це ситуація чи ви копіюєте дані на 3-й диск?
sippybear

Відповіді:


1

Я не думаю, що можна змінити символічне посилання, а лише відтворити його. Для цього знадобиться написати сценарій або програму для сканування диска та відтворення символічних посилань.

Ось ідея, яка може бути простішою: Створіть віртуальну машину та встановіть цей фізичний диск G: як свій C: диск.

І VMware, і VirtualBox підтримують фізичні / сирі диски:


Ну, я досить досвідчений в програмі Win32, що використовує C / C ++, і мені також виникла ідея написати невелику програму, яка робить це. Я просто сподівався, що там буде інструмент для цього.
Макс Кілланд

На жаль, я не знаю жодного такого інструменту. Мені також подобається програмування, але у вашому випадку я б спробував рішення VM з однієї причини: він не може знищити диск через мою помилку. У будь-якому випадку, я б порадив зробити резервну копію зображення на диску і, якщо можливо, використовувати його замість цього.
harrymc

0

Замість того, щоб намагатися змінити всі ваші посилання, ви можете скористатися robocopyз командного рядка скопіювати символічне посилання замість його цілі.

ROBOCOPY source\path destination\path /E /SL

Ця команда буде рекурсивно копіювати всі каталоги та файли з вашого джерела до пункту призначення ( /E), а замість копіювання цілі символічного посилання скопіює саме посилання ( /SL)

Ви можете перерахувати всі символічні посилання та цілі за допомогою оболонки повноважень. Ця відповідь на StackExchange показує, як.

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

Ви можете перезаписати наявні посилання також за допомогою посилання shell.

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

Отже, сценарій для модифікації всіх посилань у папці виглядатиме так:

$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

Не забудьте змінити $directoryзначення та запустити це з підказки адміністрування. Ви можете додати -Recurseпрапор до dirкоманди, щоб також шукати в папках.


Так, але мені потрібно скопіювати символічну ціль посилання, оскільки оригінальний диск буде знищений пізніше.
Макс Кілланд

@MaxKielland Чи дані, які вказують на символічні посилання, існують на тому ж диску, що й символічні посилання, чи вони є десь ще?
sippybear

Так, мета всіх символьних посилань - це той самий фізичний розділ (як C: для того, як він використовувався), але в моїй системі як USB-накопичувач він знаходиться на G: але всі символьні посилання все ще вказують на C: (не на реальні посилання , але абсолютні посилання).
Макс Кілланд

@MaxKielland Будь ласка, повідомте мене, якщо цей сценарій працює.
sippybear
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.