我正在尝试使用批处理文件每天下午自动将我的桌面复制到云中。我可以使用其他驱动器执行此操作,但不能使用我的桌面

Eli*_*ise 5 windows desktop batch command-line

此命令可以正常工作以将我的 F 驱动器备份到我的 OneDrive,并使用当前日期命名文件夹:

xcopy "F:\" "C:\Users\myUserName\OneDrive for Business\F Backup %date:~-4,4%%date:~-10,2%%date:~-7,2%" /e /i /h /k /q /s /v /y /z
Run Code Online (Sandbox Code Playgroud)

但是,当我为我的桌面尝试类似的东西时,它不起作用:

xcopy "C:\Users\myUserName\Desktop\" "C:\Users\myUserName\OneDrive for Business\Desktop Backup-%date:~-4,4%%date:~-10,2%%date:~-7,2%" /e /i /h /k /q /s /v /y /z
Run Code Online (Sandbox Code Playgroud)

这让我疯狂。我在每天同时运行的批处理文件中都有。桌面行首先运行,似乎工作正常(但我检查时没有复制任何内容),然后 F 驱动器命令运行正常。

任何建议将不胜感激。我猜这是与桌面不兼容的额外参数之一?可能很明显,我的批处理文件知识几乎不存在(我对 F 驱动器的工作印象非常深刻......),所以请原谅我的无知。谢谢你。

Vom*_*yle 2

批处理文件每天下午自动将我的桌面复制到云端

但是,当我在桌面上尝试类似的操作时,它不起作用:

xcopy "C:\Users\myUserName\Desktop\" "C:\Users\myUserName\OneDrive for Business\Desktop Backup-%date:~-4,4%%date:~-10,2%%date:~-7,2%" /e /i /h /k /q /s /v /y /z
Run Code Online (Sandbox Code Playgroud)

现在它只是告诉我“路径无效。已复制 0 个文件。

潜在问题及更多

  1. XCOPY是一个已弃用的命令,自 Windows Vista(和更新的操作系统)起,专门根据 Microsoft 的规定,打算由 Robocopy 取代。

    • 我将Robocopy在下面发布一个示例命令批处理解决方案,因为它是一个 Windows 本机解决方案,但不被弃用,就像 XCOPY
  2. XCOPY当一起使用时,一些命令开关在您的示例中似乎会发生冲突:

    • /S Copies directories and subdirectories except empty ones.
    • /E Copies directories and subdirectories, including empty ones.
  3. 使用该/I开关而不使源 ( "C:\Users\myUserName\Desktop\") 结尾\*.*可能是其他开关的问题,因为您告诉它假设它是目标中的目录(如果在复制发生之前不存在)。

    • /I If destination does not exist and copying more than one . file, assumes that destination must be a directory.
  4. 您不会首先检查新的显式文件夹是否~\Desktop Backup YYYYMMDD存在,如果不存在则创建它。

    • IF NOT EXIST "~\Desktop Backup YYYYMMDD" MD "~\Desktop Backup YYYYMMDD"
  5. 当您不从命令行手动运行时,您不会将这些命令的输出记录到日志文件中以查看详细信息。

    • ~ /s /v /y /z>>C:\Path\Logfile.txt

更好的现代 Windows 解决方案

ROBOCOPY 批处理脚本示例

(请参阅下面的脚本注释,了解我在本示例中使用的选项,并确保在需要这些设置的地方更改 sourcedir 和 targetdir 变量路径。请务必从测试位置进行测试,以便彻底并在使用之前确认自己用于生产目的)

@ECHO ON
SETLOCAL
SET SourceDir=C:\Users\myUserName\Desktop
SET TargetDir=C:\Users\myUserName\OneDrive for Business\F Backup %date:~-4,4%%date:~-10,2%%date:~-7,2%
SET LogFile=C:\LogPath\Logfile.txt
IF NOT EXIST "%TargetDir%" MD "%TargetDir%"
ROBOCOPY "%SourcePath%" "%TargetDir%" *.* /PURGE /S /NP /ZB /R:5 /LOG+:%Log% /TS /FP
GOTO EOF
Run Code Online (Sandbox Code Playgroud)

脚本注释

我在示例中使用了这些选项,但请参阅下面如何查看所有选项以进一步满足您的特定需求。只是并不是说某些 Robocopy 选项默认执行某些 XCOPY 开关正在执行和需要的操作,因此您可能不需要包含您认为需要的每个开关。

一个例子是默认情况下它使用 (default is /COPY:DAT) 和复制到目标 (copyflags : D=Data, A=Attributes, T=Timestamps)。所以你不需要指定 /COPY:DAT.

/S         :: copy Subdirectories, but not empty ones.
/PURGE     :: delete dest files/dirs that no longer exist in source.
/NP        :: No Progress - don't display % copied.
/ZB        :: use restartable mode; if access denied use Backup mode.
/R:n       :: number of Retries on failed copies: default 1 million.
/LOG+:file :: output status to LOG file (append to existing log).
/TS        :: include source file Time Stamps in the output.
/FP        :: include Full Pathname of files in the output.
Run Code Online (Sandbox Code Playgroud)

进一步研究和细节

在 Windows 命令行中,输入Robocopy /?然后按Enter

C:\Users\PJ>robocopy /?

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows

-------------------------------------------------------------------------------

  Started : Fri Dec 18 02:29:48 2015

              Usage :: ROBOCOPY source destination [file [file]...] [options]

             source :: Source Directory (drive:\path or \\server\share\path).
        destination :: Destination Dir  (drive:\path or \\server\share\path).
               file :: File(s) to copy  (names/wildcards: default is "*.*").

::
:: Copy options :
::
                 /S :: copy Subdirectories, but not empty ones.
                 /E :: copy subdirectories, including Empty ones.
             /LEV:n :: only copy the top n LEVels of the source directory tree.

                 /Z :: copy files in restartable mode.
                 /B :: copy files in Backup mode.
                /ZB :: use restartable mode; if access denied use Backup mode.
            /EFSRAW :: copy all encrypted files in EFS RAW mode.

  /COPY:copyflag[s] :: what to COPY for files (default is /COPY:DAT).
                       (copyflags : D=Data, A=Attributes, T=Timestamps).
                       (S=Security=NTFS ACLs, O=Owner info, U=aUditing info).

           /DCOPY:T :: COPY Directory Timestamps.

               /SEC :: copy files with SECurity (equivalent to /COPY:DATS).
           /COPYALL :: COPY ALL file info (equivalent to /COPY:DATSOU).
            /NOCOPY :: COPY NO file info (useful with /PURGE).

            /SECFIX :: FIX file SECurity on all files, even skipped files.
            /TIMFIX :: FIX file TIMes on all files, even skipped files.

             /PURGE :: delete dest files/dirs that no longer exist in source.
               /MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).

               /MOV :: MOVe files (delete from source after copying).
              /MOVE :: MOVE files AND dirs (delete from source after copying).

     /A+:[RASHCNET] :: add the given Attributes to copied files.
     /A-:[RASHCNET] :: remove the given Attributes from copied files.

            /CREATE :: CREATE directory tree and zero-length files only.
               /FAT :: create destination files using 8.3 FAT file names only.
               /256 :: turn off very long path (> 256 characters) support.

             /MON:n :: MONitor source; run again when more than n changes seen.
             /MOT:m :: MOnitor source; run again in m minutes Time, if changed.

      /RH:hhmm-hhmm :: Run Hours - times when new copies may be started.
                /PF :: check run hours on a Per File (not per pass) basis.

             /IPG:n :: Inter-Packet Gap (ms), to free bandwidth on slow lines.

                 /SL:: copy symbolic links versus the target.
::
:: File Selection Options :
::
                 /A :: copy only files with the Archive attribute set.
                 /M :: copy only files with the Archive attribute and reset it.
    /IA:[RASHCNETO] :: Include only files with any of the given Attributes set.
    /XA:[RASHCNETO] :: eXclude files with any of the given Attributes set.

 /XF file [file]... :: eXclude Files matching given names/paths/wildcards.
 /XD dirs [dirs]... :: eXclude Directories matching given names/paths.

                /XC :: eXclude Changed files.
                /XN :: eXclude Newer files.
                /XO :: eXclude Older files.
                /XX :: eXclude eXtra files and directories.
                /XL :: eXclude Lonely files and directories.
                /IS :: Include Same files.
                /IT :: Include Tweaked files.

             /MAX:n :: MAXimum file size - exclude files bigger than n bytes.
             /MIN:n :: MINimum file size - exclude files smaller than n bytes.

          /MAXAGE:n :: MAXimum file AGE - exclude files older than n days/date.
          /MINAGE:n :: MINimum file AGE - exclude files newer than n days/date.
          /MAXLAD:n :: MAXimum Last Access Date - exclude files unused since n.
          /MINLAD:n :: MINimum Last Access Date - exclude files used since n.
                       (If n < 1900 then n = n days, else n = YYYYMMDD date).

                /XJ :: eXclude Junction points. (normally included by default).

               /FFT :: assume FAT File Times (2-second granularity).
               /DST :: compensate for one-hour DST time differences.

               /XJD :: eXclude Junction points for Directories.
               /XJF :: eXclude Junction points for Files.

::
:: Retry Options :
::
               /R:n :: number of Retries on failed copies: default 1 million.
               /W:n :: Wait time between retries: default is 30 seconds.

               /REG :: Save /R:n and /W:n in the Registry as default settings.

               /TBD :: wait for sharenames To Be Defined (retry error 67).

::
:: Logging Options :
::
                 /L :: List only - don't copy, timestamp or delete any files.
                 /X :: report all eXtra files, not just those selected.
                 /V :: produce Verbose output, showing skipped files.
                /TS :: include source file Time Stamps in the output.
                /FP :: include Full Pathname of files in the output.
             /BYTES :: Print sizes as bytes.

                /NS :: No Size - don't log file sizes.
                /NC :: No Class - don't log file classes.
               /NFL :: No File List - don't log file names.
               /NDL :: No Directory List - don't log directory names.

                /NP :: No Progress - don't display % copied.
               /ETA :: show Estimated Time of Arrival of copied files.

          /LOG:file :: output status to LOG file (overwrite existing log).
         /LOG+:file :: output status to LOG file (append to existing log).

       /UNILOG:file :: output status to LOG file as UNICODE (overwrite existing
log).
      /UNILOG+:file :: output status to LOG file as UNICODE (append to existing
log).

               /TEE :: output to console window, as well as the log file.

               /NJH :: No Job Header.
               /NJS :: No Job Summary.

           /UNICODE :: output status as UNICODE.

::
:: Job Options :
::
       /JOB:jobname :: take parameters from the named JOB file.
      /SAVE:jobname :: SAVE parameters to the named job file
              /QUIT :: QUIT after processing command line (to view parameters).

              /NOSD :: NO Source Directory is specified.
              /NODD :: NO Destination Directory is specified.
                /IF :: Include the following Files.
Run Code Online (Sandbox Code Playgroud)