此命令可以正常工作,将我的 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
但是,当我在桌面上尝试类似操作时,它不起作用:
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
这真让我抓狂。我把这两个命令都放在一个批处理文件中,每天在同一时间运行。桌面命令首先运行,似乎可以正常工作(但我检查时没有复制任何内容),然后 F 驱动器命令运行正常。
任何建议都将不胜感激。我猜是额外的参数之一与桌面不兼容?很明显,我对批处理文件一无所知(我对 F 驱动器部分的工作感到很满意...),所以请原谅我的无知。谢谢。
答案1
批处理文件每天下午自动将我的桌面复制到云端
但是,当我在桌面上尝试类似操作时,它不起作用:
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
现在它只是告诉我“路径无效。已复制 0 个文件。
潜在问题及其他
XCOPY
是一个弃用的命令,旨在由 Microsoft 从 Windows Vista(以及更新的操作系统)开始用 Robocopy 取代。- 我将
Robocopy
在下面发布一个示例命令批处理解决方案,因为它是一个 Windows 原生解决方案,但并没有被弃用,就像XCOPY
- 我将
在您的示例中,某些
XCOPY
命令开关一起使用时似乎会发生冲突:/S Copies directories and subdirectories except empty ones.
/E Copies directories and subdirectories, including empty ones.
使用
/I
开关而不使源("C:\Users\myUserName\Desktop\"
)以结尾\*.*
可能会成为其他开关的问题,因为您告诉它如果在复制发生之前该目录不存在,则假定它是目标中的目录。/I If destination does not exist and copying more than one . file, assumes that destination must be a directory.
您没有
~\Desktop Backup YYYYMMDD
先检查新的明确文件夹是否存在,如果不存在则创建它。IF NOT EXIST "~\Desktop Backup YYYYMMDD" MD "~\Desktop Backup YYYYMMDD"
否则,当您没有从命令行手动运行时,您就不会将这些命令的输出记录到日志文件中以查看详细信息。
~ /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
脚本说明
我在我的示例中使用了这些选项,但请参阅下文如何查看所有选项以进一步满足您的特定需求。只是某些 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.
进一步研究和细节
在 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.