Два разных варианта, достигающие одного и того же результата, зависят от вашего стиля.
- опустите явный префикс
db2cmd -i -c
для любого действия CLP Db2 и автоматически запустите весь сценарий в db2cmd.Преимущество этого заключается в том, что он будет работать либо в окне CMD.EXE, либо в DB2CMD.EXE без изменений.В этом случае вам не нужно специальное цитирование или экранирование.Пакетный файл будет выглядеть следующим образом (отрегулируйте путь db2cmd в соответствии с вашей средой).
set db2cmd="C:\Program Files\IBM\SQLLIB\BIN\db2cmd.exe"
@if "%DB2CLP%"=="" %db2cmd% /w /c /i "%0" %* && @goto :EOF
FOR /F "usebackq skip=3 tokens=4" %%G IN ("aliasname.txt") DO DB2 UNCATALOG DATABASE %%G
Если вы предпочитаете явный префикс db2cmd -w -c
в командах Db2 CLP вы должны избегать двойных кавычек, упомянутых в ответе Марка Баринштейна, хотя в сценарии требуется %% G:
db2cmd -i -c FOR /F \"usebackq skip=3 tokens=4\" %%G IN ("aliasname.txt") DO DB2 UNCATALOG DATABASE %%G
-
Кроме того, вам может потребоваться исправить синтаксис команды Db2 CLP, например, db2 uncatalog system odbc data source
или, альтернативно, db2 uncatalog database
в зависимости от того, что вы хотите откатализировать.