Назад | Перейти на главную страницу

пакет для цикла со скобкой в ​​команде

У меня есть командный файл со следующим кодом:

for /f "tokens=*" %%a in ('dir /b /a-d') do (
 echo Processing %%a >>%LOG%
 dtsrun /S(local) /NNotesLoad /A"FilePath:8="%NOTESDIR%\%%a" /AClientID=%1 >>%LOG%

 echo Deleting %%a >>%LOG%
 del %%a /q
)

Это возвращает сообщение об ошибке «/ NNotesLoad было неожиданным в это время», потому что вторая скобка фактически закрывает блок FOR.

Я должен оставить (local) как параметр / S. Как мне избежать скобок в строке dtsrun?

Попробуйте заменить / S (local) на / S% computername% или / S. или / Slocalhost. Все они должны выполнять одно и то же без использования скобок.

В качестве альтернативы вы можете использовать курсор ^, чтобы избежать скобок:

dtsrun / S ^ (локальный ^) ...

спасибо, отметка

При возможной потере некоторой читабельности вы можете поместить все эти команды в одну строку и отказаться от скобок в цикле for.

for blah blah blah do command 1 && command 2 && command 3 && command 4