仍然遇到 XCOPY 困难

仍然遇到 XCOPY 困难

感谢这个答案使用 XCOPY 的路径无效经过大卫·波斯蒂尔,我的情况有所好转:

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

以下是我所看到的:

在此处输入图片描述

答案1

时间戳中的冒号(“:”)是驱动器号后的路径组件中的无效字符(原因很明显)。我会将其完全删除,以使其适合路径。

答案2

仍然遇到 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)

您需要考虑另一种方法来命名您的目标目录。


命名约定

以下基本规则使应用程序能够创建和处理文件和目录的有效名称,而不管文件系统如何:

  • 使用句点将目录或文件名称中的基本文件名与扩展名分隔开。
  • 使用反斜杠 ( \) 分隔路径的各个部分。反斜杠将文件名与其路径分开,并将路径中的一个目录名与另一个目录名分开。您不能在实际文件或目录的名称中使用反斜杠,因为它是将名称分隔成各个部分的保留字符。
  • 根据需要使用反斜杠作为卷名称的一部分,例如,通用命名约定 (UNC) 名称的C:\inC:\path\file\\server\sharein \\server\share\path\file。有关 UNC 名称的更多信息,请参阅最大路径长度限制部分。
  • 不要假设区分大小写。例如,假设名称 OSCAR、Oscar 和 oscar 相同,即使某些文件系统(如 POSIX 兼容文件系统)可能认为它们不同。请注意,NTFS 支持区分大小写的 POSIX 语义,但这不是默认行为。有关更多信息,请参阅 CreateFile。
  • 卷标识符(驱动器字母)同样不区分大小写。例如,“D:\”和“d:\”指的是同一个卷。

  • 使用当前代码页中的任意字符作为名称,包括 Unicode 字符和扩展字符集 (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、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8 和 LPT9。还应避免在这些名称后紧跟扩展名;例如,不建议使用 NUL.txt。有关更多信息,请参阅命名空间。

  • 不要以空格或句点结尾文件或目录名称。虽然底层文件系统可能支持此类名称,但 Windows shell 和用户界面不支持。不过,可以将句点指定为名称的第一个字符。例如“.temp”。

来源命名文件、路径和命名空间

相关内容