2013-11-08 2 views
0
@ECHO OFF 

Set LOG="C:\Temp\Copy.log" 

::######################## 
:: Begin copying 
::######################## 

Set Sourcedir="c:\data\PRODDB\dir" 
Set Targetdir="C:\test" 

Echo %date% %time%: "Copying from %sourcedir% to %Targetdir%" >> %LOG% 

Forfiles /P "%Sourcedir%" /D +0 /C "cmd /c copy @path "%Targetdir%" >> %LOG% 

При выполнении приведенного выше сценария я получаю следующую ошибку: ERROR: Invalid argument/option - '>>'. Тип "FORFILES /?" для использования. что может быть проблемой здесь? спасибодля файлов Недействительный аргумент/опция - '>>'

ответ

1

Вы упускаете цитату в конце команды

Попробуйте это:

Forfiles /P "%Sourcedir%" /D +0 /C "cmd /c copy @path "%Targetdir%"" >> %LOG% 

Обратите внимание на "" непосредственно перед >>.

+0

Спасибо, ребята. Это сработало. – suri4u

2

проблема находится в параметре/C. Вы не закрываете свои двойные кавычки правильно.

попробовать

Forfiles /P "%Sourcedir%" /D +0 /C "cmd /c copy @path %Targetdir%" >> %LOG% 
1

И ответ ПА и ответ будет женское бесплодие работать в большинстве случаев. Но они потерпят неудачу, если Targetdir содержит маркеры, такие как <space>, =, ; и т. Д. Или ядовитые символы, такие как &. В таких случаях нужны цитаты. Ответ Афории выглядит так, как будто это может сработать, но дополнительные цитаты приводят к тому, что Targetdir не будут указаны в первом сеансе синтаксического анализа.

Решение состоит в использовании обозначения FORFILES 0xNN для представления внутренних котировок.

Forfiles /P "%Sourcedir%" /D +0 /C "cmd /c copy @path 0x22%Targetdir%0x22" >> %LOG% 
Смежные вопросы