批量生成动态命令
Dynamic Command Generation in Batch
我正在尝试使用 bat 文件为 datastage 生成动态命令,但我想我遗漏了一些东西。
命令"variation"是通过读取.txt文件获取的。
这里是代码:
SET PATH_Classic=C:\IBM\InformationServer\Clients\Classic
CD %PATH_Classic%
SET /P INV_ID=Type the invocation ID :
ECHO %INV_ID%
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%G in (%1) do (
SET FLOW=%%G
SET JOBNAME=****_****_**_***_%FLOW%_***_***.%INV_ID%
SET STAGENAME=ReadFile_%FLOW%
dsjob -domain NONE -user ******* -password ******* -server ****** -linkinfo ****** %JOBNAME% %STAGENAME% read_file_IN
)
pause
我不得不将一些信息保密(*** 东西),但逻辑没有改变。
问题似乎是变量 FLOW、JOBNAME 和 STAGENAME 没有被设置。
您启用了延迟扩展,但您也必须实际使用它,例如 !Variable!
而不是 %Variable%
。这是固定代码(我也改进了一些quotation-mark-related问题):
set "PATH_Classic=C:\IBM\InformationServer\Clients\Classic"
cd /D "%PATH_Classic%"
set /P "INV_ID=Type the invocation ID: "
echo %INV_ID%
setlocal EnableDelayedExpansion
for /F "usebackq tokens=* delims= " %%G in ("%~1") do (
set "FLOW=%%G"
set "JOBNAME=****_****_**_***_!FLOW!_***_***.%INV_ID%"
set "STAGENAME=ReadFile_!FLOW!"
dsjob -domain NONE -user ******* -password ******* -server ****** -linkinfo ****** !JOBNAME! !STAGENAME! read_file_IN
)
endlocal
pause
我正在尝试使用 bat 文件为 datastage 生成动态命令,但我想我遗漏了一些东西。
命令"variation"是通过读取.txt文件获取的。
这里是代码:
SET PATH_Classic=C:\IBM\InformationServer\Clients\Classic
CD %PATH_Classic%
SET /P INV_ID=Type the invocation ID :
ECHO %INV_ID%
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%G in (%1) do (
SET FLOW=%%G
SET JOBNAME=****_****_**_***_%FLOW%_***_***.%INV_ID%
SET STAGENAME=ReadFile_%FLOW%
dsjob -domain NONE -user ******* -password ******* -server ****** -linkinfo ****** %JOBNAME% %STAGENAME% read_file_IN
)
pause
我不得不将一些信息保密(*** 东西),但逻辑没有改变。
问题似乎是变量 FLOW、JOBNAME 和 STAGENAME 没有被设置。
您启用了延迟扩展,但您也必须实际使用它,例如 !Variable!
而不是 %Variable%
。这是固定代码(我也改进了一些quotation-mark-related问题):
set "PATH_Classic=C:\IBM\InformationServer\Clients\Classic"
cd /D "%PATH_Classic%"
set /P "INV_ID=Type the invocation ID: "
echo %INV_ID%
setlocal EnableDelayedExpansion
for /F "usebackq tokens=* delims= " %%G in ("%~1") do (
set "FLOW=%%G"
set "JOBNAME=****_****_**_***_!FLOW!_***_***.%INV_ID%"
set "STAGENAME=ReadFile_!FLOW!"
dsjob -domain NONE -user ******* -password ******* -server ****** -linkinfo ****** !JOBNAME! !STAGENAME! read_file_IN
)
endlocal
pause