我试图使用批处理文件编写VPN拨号器/断路器,但我卡住了.经过一番调查后,我发现%密码的存在并不好.
这是代码
@echo OFF
SET SWITCHPARSE1=%1
SET SWITCHPARSE2=%2
REM echo %SWITCHPARSE1%
SHIFT
SHIFT
IF "SWITCHPARSE1" == "" goto Usage
IF "SWITCHPARSE1" == "/?" goto Usage
IF "SWITCHPARSE2" == "" goto Usage
IF "SWITCHPARSE2" == "/?" goto Usage
IF "%SWITCHPARSE1%" == "sl" (
IF "%SWITCHPARSE2%" == "conn" (
echo "inside sl conn"
rasdial sl employee1 K%%Pxev3=)g:{#Swc9
goto end
) ELSE IF "%SWITCHPARSE2%" == "disconn" (
rasdial sl /disconnect
goto end
) ELSE (
goto Usage
)
) ELSE IF …Run Code Online (Sandbox Code Playgroud) 我非常擅长为Windows编写批处理脚本,但即便在这些年后如何正确地逃避字符让我感到困惑.在尝试找出正确的方法来逃避正则表达式以便与sed一起使用时,这一点尤其困难.有什么工具可以帮助我吗?也许某些东西允许我粘贴在"普通"字符串中并且它会吐出正确转义的字符串版本?
更新: 我不愿意举一个例子,因为我不是在寻找如何逃避一个特定字符串的答案.我也不是在寻找适合某个特定应用的解决方案.我正在寻找一种工具,它可以帮助我为每个我需要逃脱的字符串获取正确的转义语法,无论从命令行使用什么工具.
那就是我真正想要的正则表达式
(^.*)(Form Product=")([^"]*") FormType="[^"]*" FormID="([0-9][0-9]*)".*$
Run Code Online (Sandbox Code Playgroud)
采用真正的正则表达式(即就BATCH而言未转义)并将其包装成一些sed语法,例如ssed "s@ --- Insert escaped regex here --- @http://psph/\1/\2@g" "%~1"最后将其转义...再次,是否有任何工具可以帮助转义任何字符串以便在BATCH命令行上使用?
ps BATCH的逃避语法有很多例外,我甚至会选择一个好的备忘单.
批处理文件中的特殊字符很难,但是我没有找到正确的解决方法来正确地转义这个特定字符串的前两个字符我试图通过该应用程序.
SET pass=^&AntiBatchfileString
A_Program.exe /pass=%pass%
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
:: Escaping the escape twice, first for ^, second for &.
SET pass=^^^^&AntiBatchfileString
echo %pass%
:: Combining escapes.
SET first=^^
SET second=^^&AntiBatchfileString
SET pass=%first%%second%
echo %pass%
:: Preventing expansion
SET first=^^
SET second=^^&AntiBatchfileString
SET pass=!first!%second%
echo %pass%
:: I got this to print correctly
SET "pass=^&AntiBatchfileString"
echo ^^%pass%
Run Code Online (Sandbox Code Playgroud)
仍然在通过最后一个时它不接受登录,我不知道最终输出是什么.这让我想到也许是在将参数传递给应用程序时尝试进行另一次扩展,所以我也引用了它.
SET "pass=^&AntiBatchfileString"
A_Program.exe "/pass=^^%pass%"
Run Code Online (Sandbox Code Playgroud)
它仍然无法正常工作,我不确定我现在缺少什么.