在批处理参数调用中传递百分号

3

在Windows 7上...

对我来说,这个Stack Overflow答案似乎有误: 使用百分号作为CMD参数

在Called.bat中

echo 1=%1

呼叫者蝙蝠

call called.bat "percent%%sign"

结果

percent%%sign = 百分比

"percent%%sign" = "百分比"

percent^%sign = 百分比

"percent^%sign" = "percent^%sign"

percent%%%%sign= 百分比

percent%%%sign= 百分比

"percent%%%%sign" = "百分比"

"percent%%%sign" = "百分比"


这到底是什么问题?你期望什么?你需要什么? - jeb
我希望echo响应类似于百分号%的内容。 - Mark Robbins
3个回答

2

调用方

@ECHO OFF
SETLOCAL

CALL qq22658604 "percent%sign"
CALL qq22658604 "percent%%sign"
CALL qq22658604 "percent%%%sign"
CALL qq22658604 "percent%%%%sign"
CALL qq22658604 percent%sign
CALL qq22658604 percent%%sign
CALL qq22658604 percent%%%sign
CALL qq22658604 percent%%%%sign

GOTO :EOF

qq22658604

@ECHO OFF
ECHO 1=%1
GOTO :EOF

结果

1="percentsign"
1="percentsign"
1="percentsign"
1="percent%sign"
1=percentsign
1=percentsign
1=percentsign
1=percent%sign

NFF。

0

当我使用一个名为second.bat的文件时

@echo off
echo %~1

现在有两种情况。
如果您从批处理文件中调用 second.bat,则调用者批处理文件中的 CALL 行需要是
call called.bat "percent%%%%sign"
只要参数内部没有空格,就可以省略引号。

如果您直接从 cmd-prompt 调用 called.bat,则可以使用
call called.bat "percent%sign"


四个带引号的百分号对我不起作用。你在你的机器上运行了吗?ECHO有什么奇怪的问题吗? - Mark Robbins
@MarkRobbins 是的,我已经在Win7x64上测试过了,但这也应该适用于任何其他Windows系统。 - jeb

0

好的,这是我的错。问题是由名为“Take Command”的cmd shell软件v13由JP Software引起的。echo命令的行为不同。目前我没有任何关于如何使其正常工作的见解。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接