PSEXEC输入重定向

时间:2011-11-21 15:04:11

标签: psexec

我正在使用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

1 个答案:

答案 0 :(得分: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"