我想在批处理文件中实现这个C代码
int i;
scanf("%d", &i);
for(int j = 0;j<i;j++)
{
scanf("%d",&j);
printf("%d",j);
}
我会使用&gt;运行c程序在DOS中重定向,以便打印输出在文件中找到我。我想在我的批处理文件中做同样的事情,我可以编写类似
的内容 echo %variable% >> file
但它对我不起作用
@echo off
for %%i in (1 2 3) do (
set /p c=enter a name?
echo %%i
echo %c% >> file.txt
)
出了什么问题?
答案 0 :(得分:4)
由于您在尝试引用if
块中的更改变量时需要延迟变量扩展,因此无效。您可以尝试以下方法:
@echo off
setlocal enabledelayedexpansion
for %%i in (1 2 3) do (
set /p c=enter a name?
echo %%i
echo !c! >> file.txt
)
因为这只会在代码运行时评估c
,而不是在解析行(在本例中是完整的if
语句)时。{/ p>
尽管如此,批量翻译C代码可能看起来更像:
@echo off
set /p i=
:loop
set /p j=
echo %j%
set /a j+=1
if %j% LSS %i% goto loop
如果您愿意,可以添加提示,但C程序也没有提示:)。现在,您可以将批处理程序的输出作为一个整体进行管道处理,或者只需在其中添加>> file
即可。