1

В пакете есть способ указать путь, используя имя тома вместо буквы диска? (например: что-то вроде \\RECOVERY \Docs \...)

Или, если это невозможно, есть ли способ проверить, принадлежит ли определенное имя тома определенной букве диска (например: если F:\ is RECOVERY, сделайте это еще раз)

Вот что я хочу сделать: создать пакет для резервного копирования одного диска на другой, но, поскольку оба диска (исходный и целевой) находятся на съемных USB-дисках, я не могу быть уверен, что буквы дисков никогда не изменятся. Копирование резервной копии в рабочую папку вместо противоположной будет катастрофическим сбоем.

1 ответ1

2

Лично я бы использовал WMI (wmic, если cmd является обязательным) и получил оттуда ярлык -> ссылка на букву диска. Это не очень сложно сделать, но я вроде согласен с комментариями, что пакетный файл не может быть лучшим решением ... для столь хрупких операций резервного копирования. Тем не менее, здесь логика, чтобы добраться туда быстро:

@echo off
set VAR=Source
for /f "skip=1" %%L in ('wmic logicaldisk where volumename^="SourceLabel" Get Caption') do @call :SetVar %%L
set VAR=Destination
for /f "skip=1" %%L in ('wmic logicaldisk where volumename^="DestinationLabel" Get Caption') do @call :SetVar %%L

echo Copying data from %Source% to %Destination%
goto :EOF

:SetVar
set Label=%1
if NOT [%Label%]==[] set %VAR%=%Label%
goto :EOF

Все, что вам нужно сделать, это заменить SourceLabel на реальную метку исходного диска, то же самое с меткой назначения. Как только вы получите правильные ссылки в команде echo - вы можете поместить любую другую логику между ней и директивой goto:EOF.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .