我遇到了一个棘手的小问题.我有一个编译的C#可执行文件,在批处理文件中使用参数调用.我想通过VS2012调试器运行这个可执行文件,但是我不确定如何将调试器附加到可执行文件,因为它是从批处理脚本运行的.
我无法将批处理脚本设置为项目的调试启动文件(仅限.exes),并且我能找到的与批处理文件关联的唯一进程是cmd.exe,它不允许调试.我已经pause在批处理脚本的开头添加了一个,所以理想情况下该进程应该运行,我应该能够附加它,但我找不到任何预期的名称.
有人知道怎么做吗?这似乎是一个相当简单的问题,但我无法弄清楚如何将其纳入调试器.
所以我有一个简单的应用程序,它使用本地数据结构动态地绘制折线图中的变量.变量名称及其对应颜色在折线图下方的图例中显示.一切都很标准.
我正在尝试添加功能,用户可以通过单击图例中的变量名称从折线图中删除单个变量.我尝试通过使用jQuery附加单击处理程序来执行此操作,如下所示:
$('.legendItem').click(removeVariable);
Run Code Online (Sandbox Code Playgroud)
但是,为了从基础数据结构中删除变量,removeVariable()需要变量名称.我将它存储data在.legendItemspan 中的属性中.这样,我可以访问属性$('.legendItem').data('keyword')因为可以有许多不同的.legendItem元素,我希望动态地将data-keyword属性传递给每个被点击元素的removeVariable()函数.
但是,当我尝试将此数据传递添加到单击处理程序时,我遇到了麻烦.当我将'keyword'作为参数添加到removeVariable()并包括:
$('.legendItem').click(removeVariable($(this).data('keyword')));
Run Code Online (Sandbox Code Playgroud)
当我在Chrome JS调试器中调试时,removeVariable()函数由第二个示例调用,但不是第一个.由于click处理程序依赖于此脚本阶段不存在的数据,因此会导致错误.是否有任何明显的错误我忽视或更好的方式进行这种动态操作?
我有一个批处理脚本,它为Windows服务提供了启动该服务所需的用户名和密码.但是,我遇到了一些问题,试图提供一个密码,该密码具有Windows批处理中的运算符.
我使用的密码有特殊字符,无法轻易更改以删除它们.在这种情况下,使用的特殊字符/批处理运算符是?和>.我们说密码是my>passwor?d.密码存储在单独的批处理文件中,该文件将其"my>passwor?d"与引号一起存储,以防止将运算符解释为此类.
密码提供给外部服务:
%MY_DIRECTORY%\MyService.exe -service %MY_USER% %MY_PWD%
这是我遇到麻烦的地方.%MY_PWD%默认情况下,包含引号作为字符串的一部分.因此,当我按原样"my>passwor?d"提供时,提供给服务,这是不正确的,导致它失败.
当我删除引号以便我拥有my>passwor?d正确的密码时,运行>和?运算符,并在执行批处理脚本时导致中断错误.
最后,当我躲避运营商,从而my>passwor?d成为my^>passwor\?d该脚本没有失败,但是提供给服务的密码包括转义字符,这是一错再错,导致服务失败.
是否有任何解决方案可以提供包含特殊字符的密码(或实际上是任何变量),而不包含转义字符或引号?
编辑:由于以下答案,我设法解决这个问题,我想要注意一点点补充.由于在外部共享文件中分配了变量,我无法更改
set MY_PWD="my>passwor?d" 至 set "MY_PWD=my>passwor?d"
所以我不得不处理擦洗引号.我的代码最终看起来像:
setlocal enabledelayedexpansion
set MY_PWD=!MY_PWD:"=!
@echo Passing Credentials
/MyService.exe -service %MY_USER% !MY_PWD!
endlocal
Run Code Online (Sandbox Code Playgroud)