小编Bob*_*obB的帖子

从批处理文件中的变量中删除双引号会导致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万
查看次数

捕获CMD批处理文件参数列表; 写入文件以供以后处理

我编写了一个批处理文件,由程序作为后处理实用程序启动.批处理文件读取调用程序提供的~24个参数,将它们存储到变量中,然后将它们写入各种文本文件.

由于CMD中的最大输入变量是%9,因此必须使用'shift'命令重复读取并将这些变量单独存储到命名变量中.因为程序输出几个类似的批处理文件,结果是顺序打开几个CMD窗口,分配变量和写入数据文件.这使得调用程序耗费了太长时间.

在我看来,我可以更快地释放调用程序,如果有可能编写一个非常简单的批处理文件,可以将所有命令参数写入文本文件,我可以在以后处理它们.基本上,只需抓住参数列表,编写并完成.

问:有没有办法将整个系列的参数数据视为一个大的文本字符串并将其写入一个大变量...然后将整个大事件回显到一个文本文件?然后在没有程序等待恢复时将字符串读入%n个变量?

参数列表类似于25 - 30个单词,少于200个字符.

参数列表示例:
"名字""姓氏""123 Steet Name Way""Cityname"ST 12345 1004968 06/01/2010"名字+姓氏"101738"On Account"20.67 xy-1z 1 8.95 3.00 1.39 0 0 239 8.95

引号中的项目作为字符串变量处理.列表以空格分隔.

有什么建议?

variables parameters cmd

2
推荐指数
1
解决办法
6626
查看次数

标签 统计

cmd ×2

variables ×2

batch-file ×1

parameters ×1

quotes ×1