![]() |
Синтаксис cmd для CmdShell (MS SQL)
Есть такой bat
Код:
set From=H:\MSSQL\Backup\Daily\*.bak Но при попытке поместить данный код в CmdShell (MS SQL) - не работает. Ситуацию осложняет ограниченный вывод ошибок. Т.е. ошибок не выводится, но и копирование не выполняется. На данный момент дошел до того, что надо склеить строки в одну через &&: set From=H:\MSSQL\Backup\Daily\*.bak && set To=H:\MSSQL\Backup\Month && xcopy "%"From"%" /y /S /I "%"To"%" теперь уже что-то начало работать, вернее, появилась ошибка "File not found - %From%" |
Цитата:
Цитата:
Код:
xcopy.exe источник [целевой_объект] [параметры] Цитата:
|
Если под "совершенно лишнее" вы имеете в виду что можно и не указывать переменные - то я отвечу что мне надо данный код указать в 2х местах для разных папок. А еще не указал - но есть - параметр /D, т.е. полный код который хочу выполнить:
Код:
set From= H:\MSSQL\Backup\Daily2\*.bak |
Цитата:
Цитата:
Код:
set From=H:\MSSQL\Backup\Daily2\*.bak |
Да это просто с блокнота копировал, пробелов в указанной выше строке
Код:
set From=H:\MSSQL\Backup\Daily\*.bak & set To=H:\MSSQL\Backup\Month & xcopy %From% /y /S /I %To% |
cons74, с командами, объединёнными по &, есть одна проблема — раскрытие переменных окружения в них происходит в момент начала исполнения всей программной строки. То есть, Ваше:
Код:
set From=H:\MSSQL\Backup\Daily\*.bak & set To=H:\MSSQL\Backup\Month & xcopy %From% /y /S /I %To% Код:
set From=H:\MSSQL\Backup\Daily\*.bak & set To=H:\MSSQL\Backup\Month & xcopy /y /S /I Код:
set "From=H:\MSSQL\Backup\Daily2\*.bak" & set "To=H:\MSSQL\Backup\Month" & call xcopy.exe "%%From%%" "%%To%%" /y /s /i |
Цитата:
Код:
( Код:
setlocal enabledelayedexpansion Код:
setlocal enabledelayedexpansion |
YuS_2, так ему одна строка нужна, а не две :). Потому — либо задание умолчания в реестре, либо параметр /V:ON для %comspec%.
|
Iska, File not found - *.bak%
Убрал двойные % - заработало: Код:
set "From=H:\MSSQL\Backup\Daily\*.bak" & set "To=H:\MSSQL\Backup\Month" & call xcopy.exe "%From%" "%To%" /y /s /i set Condition=/d:%date:~3,2%-%date:~0,2%-%date:~6,4% Добил Код:
set From=H:\MSSQL\Backup\Daily\*.bak & set To=H:\MSSQL\Backup\Month & set Condition=/d:%date:~3,2%-%date:~0,2%-%date:~6,4% & call xcopy.exe %From% %To% %Condition% /y /s /i |
Время: 06:26. |
Время: 06:26.
© OSzone.net 2001-