2

バックアップ スクリプトの FOR ループで二重引用符で囲まれた入力パラメーター ("Default User") を使用すると、余分な二重引用符のペアで囲まないと、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
4

1 に答える 1

2

で問題が発生しました%%a
%backupcmd% ""c:\users\%%a\desktop"" ""%drive%\%%a\desktop""
引用符も含めることができるため、文字列は次のようになります
""c:\users\"Default User"\desktop""

構文を使用できます%%~a。周囲の引用符を削除すると、使用できるはずです
%backupcmd% "c:\users\%%~a\desktop" "%drive%\%%~a\desktop"

于 2011-12-02T12:23:27.123 に答える