为什么xcopy需要多个引号?
问题描述:
当我的备份脚本中的FOR循环使用双引号输入参数(“Default User”)时,我在xcopy命令行出现“无效的参数数量”错误,除非我使用一对额外的双引号括起来,引号。其他命令工作正常,没有额外的引号。有人可以解释为什么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
答
您在
了与%%a
问题 %backupcmd% ""c:\users\%%a\desktop"" ""%drive%\%%a\desktop""
它可以包含还引用,所以你的字符串可能看起来像""c:\users\"Default User"\desktop""
你可以使用%%~a
语法,它去除周边报价,那么你应该可以使用%backupcmd% "c:\users\%%~a\desktop" "%drive%\%%~a\desktop"