【问题标题】:Why does xcopy require multiple quotes?为什么 xcopy 需要多个引号?
【发布时间】:2011-12-02 04:28:05
【问题描述】:

当我的备份脚本中的 FOR 循环使用双引号输入参数(“默认用户”)时,我会在 xcopy 命令行中收到“参数数量无效”错误,除非我用一对额外的双引号括起来-引号。没有额外的引号,其他命令可以正常工作。有人可以解释为什么 xcopy 会这样,以及是否有避免额外引号的解决方法?谢谢。

@echo off
setlocal
set drive=O:\Backups\test
set backupcmd=xcopy /s /c /d /e /i /r /y

if exist "c:\users" goto startvis7
if exist "c:\documents and settings\" goto startxp

:startxp
for %%a in ("Default User" Owner) do (
if exist "c:\documents and settings\%%a" (
echo ### Backing up desktop for %%a...
%backupcmd% ""c:\documents and settings\%%a\desktop"" ""%drive%\%%a\desktop""
) else (echo ### Account %%a not found.)
)
goto eof

:startvis7
for %%a in ("Default User" Owner) do (
if exist "c:\users\%%a" (
echo ### Backing up desktop for %%a...
%backupcmd% ""c:\users\%%a\desktop"" ""%drive%\%%a\desktop""
) else (echo ### Account %%a not found.)
)
:eof
echo Backup Complete!
@pause
endlocal

【问题讨论】:

    标签: batch-file dos xcopy


    【解决方案1】:

    您在%%a 中遇到问题
    %backupcmd% ""c:\users\%%a\desktop"" ""%drive%\%%a\desktop""
    它还可以包含引号,因此您的字符串可能看起来像
    ""c:\users\"Default User"\desktop""

    您可以使用%%~a 语法,它会去掉周围的引号,然后您应该可以使用
    %backupcmd% "c:\users\%%~a\desktop" "%drive%\%%~a\desktop"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 2019-08-13
      • 2021-06-06
      • 2016-03-19
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      相关资源
      最近更新 更多