我正在尝试让批处理文件创建另一个可以由第一个批处理文件调用的批处理文件。
我需要使用令牌输出for循环。对于变量,我可以在两端添加额外的%,以便将%variable%输出到文件中。然而%% i以%i(只有一个百分号)出现。香港专业教育学院尝试过克拉,括号,移动骑行,引号,额外的%符号等...因为我的生活无法弄清楚如何将它打印成%% i来归档。
示例代码:
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>文件?
谢谢!
答案 0 :(得分:4)
%
转义%
。将每个%
逐字翻译成双字母。
@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
结果
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
在线路终端空间的有益课程;由于所需文本和文件名重定向器之间的空间,以这种方式生成的每一行都将包含一个终端空间。将重定向器和文件名移动到行的开头将仅重现REAL终端空间
>> temp.bat echo FOR /f "delims=" %%%%i IN ('commands') DO CALL :process %%%%i