首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何回显文件%%i令牌?字面量

如何回显文件%%i令牌?字面量
EN

Stack Overflow用户
提问于 2013-07-17 11:14:36
回答 1查看 138关注 0票数 0

我正在尝试让一个批处理文件创建另一个批处理文件,该批处理文件可以被第一个批处理文件调用。

我需要让它使用令牌输出一个for循环。对于变量,我可以在两端添加额外的%,以便将%variable%输出到文件中。然而,%%i以%i的形式出现(只有一个%符号)。我已经尝试了克拉,括号,移动骑手,引号,额外的%符号等…对于我的生活不知道如何使它只是打印%%i到文件。

示例代码:

代码语言:javascript
复制
echo FOR /f "delims=" %%i IN ('commands') DO CALL :process %%i > temp.bat

但无论我怎么尝试,我最终都会得到以下结果:

代码语言:javascript
复制
echo FOR /f "delims=" %i IN ('commands') DO CALL :process %i > temp.bat

我如何解决这个问题?有没有比echo > file更好的重定向文本的方法?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-17 13:55:57

%%进行转义。双倍的每一个%,你想要复制字面上。

代码语言:javascript
复制
@ECHO OFF
SETLOCAL
echo FOR /f "delims=" %%i IN ('commands') DO CALL :process %%i > temp.bat
echo FOR /f "delims=" %%%%i IN ('commands') DO CALL :process %%%%i >> temp.bat
echo FOR /f "delims=" %%%%i IN ('commands') DO CALL :process %%%%i ^>^> temp.bat >> temp.bat
GOTO :EOF

结果

代码语言:javascript
复制
FOR /f "delims=" %i IN ('commands') DO CALL :process %i 
FOR /f "delims=" %%i IN ('commands') DO CALL :process %%i 
FOR /f "delims=" %%i IN ('commands') DO CALL :process %%i >> temp.bat 

行终止空间的有益经验;以这种方式生成的每一行都将包含一个终止空间,因为所需文本和文件名重定向器之间存在空格。将重定向器和文件名移到行首将仅复制实际的终端空间

代码语言:javascript
复制
>> temp.bat echo FOR /f "delims=" %%%%i IN ('commands') DO CALL :process %%%%i
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17690466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档