1

Я пытаюсь скопировать файлы из сетевого расположения на локальный компьютер, используя приведенный ниже скрипт, но он выдает сообщение об ошибке:

путь unc не поддерживается


Сценарий

SET DESTINATION=c:\temp\new
SET DATE_FROM=02/13/2019
SET DATE_TO=02/13/2019

> nul forfiles /P \\sdpw9123app\work\ActiveMQ\logfile /S /D +%DATE_FROM% /C "cmd /C if @isdir==FALSE 2> nul forfiles /M  @file /D -%DATE_TO% && > con ( echo @path && copy /V @path %DESTINATION% )"

pause

Я также попытался использовать некоторые команды Robocopy, но не смог заставить их работать, но в идеале я хотел бы использовать команду forfiles для выполнения операции копирования.

2 ответа2

3

Похоже, проблема связана с использованием команды forfiles которая не поддерживает UNC-пути. Вы можете использовать pushd для сопоставления пути UNC для вас, а затем просто использовать оставшуюся часть пути после \\servername\sharename которая отображает папки, в которых вы должны выполнить команды. Завершите сценарий командой popd чтобы отключить все подключенные диски, созданные с помощью команды pushd .

скрипт

SET DESTINATION=c:\temp\new
SET DATE_FROM=02/13/2019
SET DATE_TO=02/13/2019

PUSHD \\sdpw9123app\work
> nul forfiles /P \ActiveMQ\logfile /S /D +%DATE_FROM% /C "cmd /C if @isdir==FALSE 2> nul forfiles /M  @file /D -%DATE_TO% && > con ( echo @path && copy /V @path %DESTINATION% )"
POPD

pause

осветление

  • Вместо использования forfiles /P \\sdpw9123app\work\ActiveMQ\logfile

    • Используйте PUSHD \\sdpw9123app\work в строке перед командой forfiles
    • Выполните команду forfiles строку как forfiles /P \ActiveMQ\logfile
    • Используйте POPD в строке после команды forfiles

Дополнительные ресурсы

  • PUSHD

    UNC Сетевые пути

    Если указан путь UNC, PUSHD создаст временную карту дисков и затем будет использовать этот новый диск. Временные буквы дисков располагаются в обратном алфавитном порядке, поэтому, если Z: свободна, она будет использоваться первой.

  • POPD

    POPD также удалит все временные карты дисков, созданные PUSHD

-1

В пакетных файлах вам нужно использовать % дважды при обращении к переменным, т.е. %%DATE_TO%% , тогда как вам нужно сделать это только один раз в командной строке. Попробуйте исправить это, и посмотрите, работает ли выше, когда вы вставите его в cmd.

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