相关疑难解决方法(0)

从批处理文件中的变量中删除双引号会导致CMD环境出现问题

任何人都可以帮助有效和安全地从批处理变量中删除引号吗?

我编写了一个批处理文件,它成功导入参数列表%1,%2,%3等,并将它们放入命名变量中.其中一些参数包含多个单词,因此用双引号括起来.

> "Susie Jo" (%1)  
> "Smith Barnes" (%2)  
> "123 E. Main St." (%3)  
Run Code Online (Sandbox Code Playgroud)

接下来将这些%变量放在命名变量中:

> set FirstName=%1  
> set LastName=%2  
> set ShipAddr=%3  
Run Code Online (Sandbox Code Playgroud)

变量验证由echo完成.

echo.%FirstName%
echo.%LastName%
echo.%ShipAddr%

结果显示为

"Susie Jo"  
"Smith Barnes"  
"123 E. Main St."  
Run Code Online (Sandbox Code Playgroud)

我需要消除所选变量的包含引号.例如,FirstName和LastName在别处使用,不得包含引号.

在测试批处理文件中,我成功地使用变量中的~tilde字符来消除引号.

> set FirstName=%~1
> set LastName=%~2 
Run Code Online (Sandbox Code Playgroud)

我以为我有解决方案,但我很快就遇到了执行批处理文件的异常行为.突然间,CMD无法识别长路径的声明.从完整路径正常执行批处理文件

> C:\Documents and Settings\Administrator\My Documents\Txt\batchtest\dataout.bat
Run Code Online (Sandbox Code Playgroud)

回报

> 'C:\Documents' is not recognized as an internal or external command....
Run Code Online (Sandbox Code Playgroud)

因此,似乎在即将到来的%1%2 ...%n变量中添加了〜tilde字符已经引起了一些变化.可能有些环境变量已被改变?

我还尝试使用FOR命令通过各种尝试清除变量中的引号.这似乎很尴尬,我无法通过创建执行任务的变量列表来学习如何实现这一目标:

这样的事情:

for %%g in (%FirstName% %LastName%) do (
set %%g=%%~g
set %%h=%%~h …
Run Code Online (Sandbox Code Playgroud)

variables quotes cmd batch-file

110
推荐指数
6
解决办法
15万
查看次数

如何从Windows批处理文件中的ECHO'ed字符串中删除引号?

我有一个我正在创建的Windows批处理文件,但我必须ECHO一个大的复杂字符串,所以我必须在任何一端放双引号.问题是引号也正在被我正在写入的文件进行ECHO.你如何回收这样的字符串并删除引号?

更新:

我花了最近两天的时间来研究这个问题,最后能够将这些东西融合在一起.理查德的回答是剥离引号,但即使我把ECHO放在子程序中并直接输出字符串,Windows仍然挂在字符串中的字符上.我会接受理查德的回答,因为它回答了问题.

我最终使用了Greg的sed解决方案,但由于sed/windows错误/功能而不得不修改它(它没有帮助它没有文档).在Windows中使用sed有一些注意事项:你必须使用双引号而不是单引号,你不能直接转义字符串中的双引号,你必须结束字符串,使用^进行转义(所以^"然后,有人指出,如果你将输入管道输入到sed,那么管道中有一个管道存在错误(我没有得到验证,因为在我的最终解决方案中,我刚发现一种不在字符串中间包含所有引号的方法,只是删除了所有引号,我永远不能让endquote自行删除.)感谢所有的帮助.

windows quotes sed batch-file echo

38
推荐指数
3
解决办法
6万
查看次数

标签 统计

batch-file ×2

quotes ×2

cmd ×1

echo ×1

sed ×1

variables ×1

windows ×1