Хорошо, проще говоря, в пакете / cmdline нет функции !call
.Таким образом, db2cmd.exe
, являющийся самим процессором командной строки, требует, чтобы вы использовали системные команды с предшествующим !
Так что, хотя у вас есть командный файл, который запускает команду с параметрами, фактически это то, что происходит.Вы запускаете db2cmd
из этого cmd, затем он требует, чтобы вы вызвали другой пакетный файл, но, видя, что мы больше не в оболочке cmd, а вместо этого внутри db2cmd
, вы должны сообщить db2cmd
, чтоэто системная команда, которую вы выполняете, выполняя !call
. Вы можете протестировать ее, выполнив сам db2cmd
, где вы получите приглашение db2=>
, а затем попытайтесь использовать call
vs !call
оттуда.
Что касается вашего сообщения об ошибке:
SQL1001N "xxx" is not a valid database name. SQLSTATE=2E000
The system cannot find the file \input.txt.
DB20000I The TERMINATE command completed successfully
Попробуйте добавить путь к файлу input.txt
for /F "delims=;" %%i in (C:\somepath\input.txt) do (
something
)
или местоinput.txt
в вашем рабочем каталоге.