2

我正在使用 Psexec 运行远程批处理文件。我将输入传递给 psexec 并将其重定向到寻求文件名作为其输入的远程批处理文件。但是,在重定向时,文件名会变成垃圾,因为 @##&#* 这意味着实际文件名不会传递给用户提供的批处理文件。谁能告诉这可能是什么原因。

pause
cd c:
set /P INPUT=Type input: %=%
echo Your input was: %INPUT%
copy %INPUT% \\remotemachineip\C$ && c:\psexec \\machineip cmd /k "c:\batchfile.bat arg1 < %INPUT% & del %INPUT%"  -e -c -f -i
pause
4

1 回答 1

1
pause
cd c:
set /P INPUT=Type input: %=%
echo Your input was: %INPUT%

copy %INPUT% \\remotemachineip\C$ && c:\psexec \\machineip cmd /k c:\batchfile.bat %INPUT% & del %INPUT%  -c -f -i
pause

从本地机器上的上述批处理文件命令中寻找输入的远程批处理文件。所以%1(下面的命令)被用户输入的%INPUT%(上面代码内容中cmd.exe中的第二个参数)替换,sqlcmd命令将被执行。因此用户在上述批处理文件中传递的输入将成功重定向到下面的批处理文件(内容),并且其中的命令(下面的sqlcmd)将成功执行。

SQLCMD  -Sservername -d(databasename) -iC:LINKEDSERVER.sql -v filename="%1"

例如,如果我将 %INPUT% 指定为c:\inputfile.xls,它将被重定向到 SQLCMD 命令来代替 %1,因此它将执行为--

SQLCMD  -Sservername -d(databasename) -iC:LINKEDSERVER.sql -v filename="c:\inputfile.xls"
于 2011-11-22T15:50:20.770 回答