команда windows cmd - синтаксическая ошибка - PullRequest
0 голосов
/ 15 марта 2011

Я получаю ошибку при выполнении этой команды:

for /f "delims=|" %f in ('dir /b y:\db\b') do "Y:\robocopy.exe" "y:\db\b\%f\" "y:\db\a\%f\Certificates and deliverables\" /e

"Y:\robocopy.exe" "y:\db\b\a 001\" "y:\db\a\a 001\Certificates and deliverables\" /e

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

  Started : Tue Mar 15 14:06:41 2011

   Source : y:\db\b\a 001" y:\db\a\a\
     Dest : y:\db\b\001\Certificates\

    Files : and
            deliverables"

  Options : /S /E /COPY:DAT /R:1000000 /W:30

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

2011/03/15 14:06:41 ERROR 123 (0x0000007B) Accessing Source Directory y:\db\b\a 001" y:\db\a\a\
The filename, directory name, or volume label syntax is incorrect.

Я не могу заставить его работать, помогите, пожалуйста.

Ответы [ 2 ]

0 голосов
/ 15 марта 2011

Ваша проблема вызвана тем фактом, что двойная кавычка, которой предшествует обратная косая черта, интерпретируется как экранированная двойная кавычка ... иногда.

См. Эту статью Рэймонда Чена: Что случилосьсо странной обработкой кавычек и обратной косой черты с помощью CommandLineToArgvW

0 голосов
/ 15 марта 2011

При анализе командной строки некоторые команды обрабатывают \" как экранированный ".

Вы должны удвоить обратную косую черту.

Также см. Эта ссылка относительно MSVCRT (обходчик зависимостей показывает, что роботоскопия использует MSVCRT).

Позвольте мне предложить:

for /f "delims=|" %f in ('dir /b y:\db\b') do "Y:\robocopy.exe" "y:\db\b\%f\\" "y:\db\a\%f\Certificates and deliverables\" /e
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...