Благодаря этому ответу Invalid Path с использованием XCOPY от DavidPostill, я стал немного лучше:

set/P Drive= Enter destination drive (with colon):
echo %Drive%
:: 
set BACKUPCMD=xcopy 
set BACKUPOPTIONS=/S /D /I /Y /Q /C /T 
:: ----------------------------------------------
:: Use WMIC to retrieve date and time
::
FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get   Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
IF "%%~L"=="" goto s_done
  Set _year=%%L
  Set _month=00%%J
  Set _day=00%%G
  Set _hour=00%%H
  SET _minute=00%%I
)
:s_done

:: Pad digits with leading zeros
  Set _month=%_month:~-2%
  Set _day=%_day:~-2%
  Set _hour=%_hour:~-2%
  Set _minute=%_minute:~-2%

Set _date=%_year%-%_month%-%_day% %_hour%:%_minute%
Echo point 1 %_date%
pause
::
:: _______Backup Operations _______________________
::
set directory=TEST
set source=%directory%
set destination=%Drive%\ARCHIVE_%_date%\%directory%

echo %BACKUPCMD% "C:\%source%\*.*" "%destination%" %BACKUPOPTIONS%
echo point 2
%BACKUPCMD% "C:\%source%\*.*" "%destination%" %BACKUPOPTIONS%
echo point 3

Вот что я вижу:

2 ответа2

0

Двоеточие (":") в метке времени является недопустимым символом в компоненте пути после буквы диска (по понятным причинам). Я вырезал бы это полностью, чтобы сделать это подходящим в пути.

0

Все еще возникают проблемы с XCOPY

Set _date=%_year%-%_month%-%_day% %_hour%:%_minute%

...

set destination=%Drive%\ARCHIVE_%_date%\%directory%

Вы пытаетесь создать имя каталога, содержащее символ : Это не разрешено.

Вы не можете использовать любой из следующих зарезервированных символов как часть каталога или имени файла:

< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)

Вам нужно подумать о другом способе назвать ваш целевой каталог.


Соглашения об именах

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

  • Используйте точку, чтобы отделить базовое имя файла от расширения в имени каталога или файла.
  • Используйте обратную косую черту (\) для разделения компонентов пути. Обратная косая черта разделяет имя файла от пути к нему и одно имя каталога от другого имени каталога в пути. Вы не можете использовать обратную косую черту в имени для фактического файла или каталога, потому что это зарезервированный символ, который разделяет имена на компоненты.
  • При необходимости используйте обратную косую черту как часть имен томов, например, C:\ in C:\path\file или \\server\share in \\server\share\path\file для имен универсального соглашения об именах (UNC) , Дополнительные сведения об именах UNC см. В разделе "Ограничение максимальной длины пути".
  • Не предполагайте чувствительность к регистру. Например, считайте имена OSCAR, Oscar и oscar одинаковыми, хотя некоторые файловые системы (например, файловая система, совместимая с POSIX) могут считать их разными. Обратите внимание, что NTFS поддерживает семантику POSIX для чувствительности к регистру, но это не поведение по умолчанию. Для получения дополнительной информации см. CreateFile.
  • Обозначения громкости (буквы дисков) также чувствительны к регистру. Например, «D:\» и «d:\» относятся к одному и тому же тому.

  • Используйте любой символ в текущей кодовой странице для имени, включая символы Юникода и символы в расширенном наборе символов (128–255), за исключением следующего:

    Следующие зарезервированные символы:

        < (less than)
        > (greater than)
        : (colon)
        " (double quote)
        / (forward slash)
        \ (backslash)
        | (vertical bar or pipe)
        ? (question mark)
        * (asterisk)
    
    • Целочисленное значение ноль, иногда его называют символом ASCII NUL.

    • Символы, чьи целочисленные представления находятся в диапазоне от 1 до 31, за исключением альтернативных потоков данных, где эти символы разрешены. Для получения дополнительной информации о файловых потоках см. Файловые потоки.

    • Любой другой символ, который целевая файловая система не позволяет.

  • Используйте точку в качестве компонента каталога в пути для представления текущего каталога, например «. \ Temp.txt». Для получения дополнительной информации см. Пути.

  • Используйте два последовательных периода (..) в качестве компонента каталога в пути для представления родителя текущего каталога, например «.. \ temp.txt». Для получения дополнительной информации см. Пути.

  • Не используйте следующие зарезервированные имена для имени файла:

    CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9. Также избегайте этих имен, за которыми сразу следует расширение; например, NUL.txt не рекомендуется. Для получения дополнительной информации см. Пространства имен.

  • Не заканчивайте имя файла или каталога пробелом или точкой. Хотя базовая файловая система может поддерживать такие имена, оболочка Windows и пользовательский интерфейс этого не делают. Однако допустимо указывать точку в качестве первого символа имени. Например, «.temp».

Файлы имен источников , пути и пространства имен

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