2011-11-21 74 views
2

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

我已經刪除了額外的標籤,因爲這個問題與SQL服務器無關。由於知道psexec的人可能會被奇數的sql-server標籤推遲,因此請將標籤保留爲特定標籤。 –

+0

我在sql服務器上工作,所以我想任何運行一些sql腳本的人都會用這種方式。所以添加了標籤。 – sandeep

回答

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將被重定向代替%1 SQLCMD命令,所以它執行它as--

SQLCMD -Sservername -d(databasename) -iC:LINKEDSERVER.sql -v filename="c:\inputfile.xls"