我有一个VB脚本,它接受了几个可以包含使用cscript的空格的参数,并且我使用以下命令进行调用:
nsExec::exec 'cscript.exe "$PATH_TO_FILE\program.vbs" "Something with spaces" "Something else"'
现在,我希望其中一个“Something”字符串包含双引号字符,其中字符串是
Something " else.
我试过了
nsExec::exec 'cscript.exe "$PATH_TO_FILE\program.vbs" "Something with spaces" "Something "" else."'
有一个转义“但是没有用,它只是使用了”其他东西“作为传入的字符串。
答案 0 :(得分:0)
基本上,没有办法处理这些引号,所以你需要一个解决方法(使用QUOTE然后在程序中替换')。
答案 1 :(得分:0)
您可以将整个流程命令行读取为一个这样的字符串(JScript代码,抱歉):
// Read process command line
var WshShell = WScript.CreateObject("WScript.Shell");
var objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2");
var childProcess =
WshShell.Exec
(
'"' + WshShell.Environment('PROCESS')('ComSpec') + '"'
+
" /C Echo \"Text lines\" && Set /p VarName="
);
childProcess.StdOut.ReadLine();
var current_pid =
objWMIService.ExecQuery
(
"Select * From Win32_Process Where ProcessId=" + childProcess.ProcessID
);
current_pid = (new Enumerator(current_pid)).item().ParentProcessId;
if (current_pid)
{
childProcess.StdIn.WriteLine("value"); // child process should now exit
}
else
{
WScript.StdErr.WriteLine("Get current PID from WMI failed.");
WScript.Quit(7);
}
var cmd_line = objWMIService.ExecQuery("Select * From Win32_Process Where ProcessID=" + current_pid);
cmd_line = (new Enumerator(cmd_line)).item().CommandLine;
WScript.Echo(cmd_line);
但是你必须自己将字符串解析为单独的参数。