私は、ユーザーのディレクトリを変更し、コマンドで入力を事前移入するスクリプトを持っているので、彼が唯一の上にそれを見て、入る押す前に値を変更する必要があります。書かれようとしているコマンドは二重引用符を必要とするので、これを入力に印刷することはできません。私は、 『『』』、「\、」^のようなエスケープ文字の様々な試みた「と{」}が、私はそれらのどれもが動作しないことを得ます。私はこのためにWshShellを使用しますが、それはそれを使用しては不可能だと、これを解決する良い方法があるのならば、私はすべての耳です。印刷二重引用符
がcommand.exe parameter="hello" parameter2="world"
の.batファイル:batscriptため
@if (@CodeSection == @Batch) @then
@echo off
rem Use %SendKeys% to send keys to the keyboard buffer
set SendKeys=CScript //nologo //E:JScript "%~F0"
rem Start cmd.exe program
start "" cmd
rem Send whatever you want to previous cmd.exe
%SendKeys% "echo Hello World!{ENTER}"
%SendKeys% "cd C:\temp{ENTER}"
%SendKeys% "command.exe parameter="hello" parameter2="world""
set /P "="
ECHO TERMINATE ORIGINAL BATCH
goto :EOF
@end
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));
出典:https://stackoverflow.com/a/22772040/1350598
これはsendkeysの問題ではありません。引数がjscriptに渡されたときの引数の解析方法です。だから私はあなたがCHR(34)にその文字を置き換えるために渡す他のいくつかの文字は、引数に置き換えられない引用符を作ることをお勧め。次に、その値をsendkeysに使用します。 – Squashman
@Squashman返事とチップありがとう!私はあなたがここに示唆していることを追求し、新しい変数を作成してcharを運のない引用で置き換えようとしました。 var test = "com.exe parameter = qhelloq" replace(文字列、chr(34)、 "q")%SendKeys%test –
通常、置き換えたい文字が来ます最初。私はそれが私がプログラムされている任意の言語で逆転見たことがありません。私が間違っている可能性がので、私はJScriptのと過度に慣れていませんよ。 – Squashman