如何在批处理文件(或从Windows命令行)中转义&符号,以便使用该start
命令在URL中打开带有&符号的网页?
双引号不适用start
; 这会启动一个新的命令行窗口.
更新1:Wael Dalloul的解决方案有效.此外,如果URL中存在URL编码字符(例如,空格编码为%20)并且它位于批处理文件中,则'%'必须编码为'%%'.在示例中不是这种情况.
例如,从命令行(CMD.EXE
):
start http://www.google.com/search?client=opera&rls=en&q=escape+ampersand&sourceid=opera&ie=utf-8&oe=utf-8
Run Code Online (Sandbox Code Playgroud)
会导致
http://www.google.com/search?client=opera
Run Code Online (Sandbox Code Playgroud)
在默认浏览器中打开并在命令行窗口中显示以下错误:
'rls' is not recognized as an internal or external command,
operable program or batch file.
'q' is not recognized as an internal or external command,
operable program or batch file.
'sourceid' is not recognized as an internal or external command,
operable program or batch file.
'ie' is not recognized as an internal or external command,
operable program or batch file. …
Run Code Online (Sandbox Code Playgroud) 我遇到了ss64.com,它为如何编写Windows命令解释器将运行的批处理脚本提供了很好的帮助.
但是,我一直无法找到批处理脚本的语法,扩展或不扩展的方法,以及如何逃避事情的良好解释.
以下是我无法解决的示例问题:
foreach $i (@ARGV) { print '*' . $i ; }
),编译它并以这种方式调用它:
my_script.exe "a ""b"" c"
?输出是 *a "b*c
my_script.exe """a b c"""
?输出它*"a*b*c"
echo
命令如何工作?在那个命令中扩展了什么?for [...] %%I
在文件脚本中使用,但for [...] %I
在交互式会话中?%PROCESSOR_ARCHITECTURE%
字面回声?我发现echo.exe %""PROCESSOR_ARCHITECTURE%
有效,有没有更好的解决方案?%
配对?例:
set b=a
,echo %a %b% c%
?%a a c%
set a =b
,echo %a %b% c%
?bb c%
我需要将包含尖括号(<和>)的字符串回显到Windows计算机上的文件.基本上我想做的是以下内容:
echo some string < with angle > brackets >>myfile.txt
这不起作用,因为命令解释器与尖括号混淆.我可以像这样引用整个字符串:
echo "some string < with angle > brackets" >>myfile.txt
但后来我的文件中有双引号,我不想要.
转义括号ala unix也不起作用:
echo some string \< with angle \> brackets >>myfile.txt
想法?
您可以将命令的输出重定向到带管道的变量吗?
我没有尝试太多,因为我没有想到任何尝试,但我尝试了一种方法(有两种变化)......
例如:
echo Hello|set text=
Run Code Online (Sandbox Code Playgroud)
没有工作,也没有:
echo Hello | set text=
Run Code Online (Sandbox Code Playgroud)
我知道你可以用FOR
命令轻松地做到这一点,但我认为用管子看起来会"更好".
如果你想知道,我没有特别的理由我问这个,除了我很好奇,我找不到答案.
这就是我想要做的:
(
@echo This is some code that is
@echo Important to echo exactly as-is
@echo Even if I use parenthesis
@echo for something (like this)
)|clip
Run Code Online (Sandbox Code Playgroud)
所以将其复制到剪贴板中.我尝试过以下方法:
(
@echo This is some code that is
@echo Important to echo exactly as-is
@echo Even if I use parenthesis
@echo for something ^(like this^)
)|clip
Run Code Online (Sandbox Code Playgroud)
但这似乎也影响了我的WANTED括号因为我收到错误.为了测试这个,我简单地完成了:
(
@echo This is some code that is
@echo Important to echo exactly as-is
@echo Even if I use parenthesis
@echo for something ^(like this^) …
Run Code Online (Sandbox Code Playgroud) 有没有一种方法可以批量指定多行字符串,类似于unix shell中的heredoc.类似的东西:
cat <<EOF > out.txt
bla
bla
..
EOF
Run Code Online (Sandbox Code Playgroud)
我们的想法是从模板文件创建自定义文件.
批处理文件默认返回最后一个命令的错误代码.
是否有可能返回前一个命令的错误代码.最值得注意的是,是否可以在管道中返回命令的错误代码?
例如,这个单行批处理脚本
foo.exe
Run Code Online (Sandbox Code Playgroud)
返回foo的错误代码.但是这一个:
foo.exe | tee output.txt
Run Code Online (Sandbox Code Playgroud)
始终返回tee的退出代码,该代码为零.
在下面提供的示例中,我执行nmake然后将STDOUT/STDERR重定向到tee,然后将其发送到屏幕,还发送到日志文件.问题是我正在尝试捕获nmake的退出代码而不是tee.我需要的是nmake的退出代码,而不是tee.
nmake | tee output.txt
Run Code Online (Sandbox Code Playgroud) 我想将一个字符串分成两部分,而不使用任何for循环.
例如,我在变量中有字符串:
str=45:abc
Run Code Online (Sandbox Code Playgroud)
我想进入45
变量和abc
另一个变量.是否可以在批处理文件中?
模式就像某些数字:somestring
我一直讨厌批处理,我仍然这样做,即使是最简单的事情,我更喜欢C或PHP/Perl.但这次我不能没有它,****叹气****.
我想将echo命令重定向到另一个命令.例如:
echo example | more
Run Code Online (Sandbox Code Playgroud)
但我也希望能够在管道的回声部分使用特殊字符:
echo & | more
Run Code Online (Sandbox Code Playgroud)
这当然没有用.所以我尝试过:
echo ^& | more
Run Code Online (Sandbox Code Playgroud)
哪个也没用.然后通过反复试验我发现:
echo ^^^& | more
Run Code Online (Sandbox Code Playgroud)
那很有效.但作为感兴趣的程序员我想知道为什么.为什么没有^&
工作^^^&
呢?