此代码的等效批处理文件

时间:2009-03-23 18:53:37

标签: batch-file scripting redirect echo

我想在批处理文件中实现这个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
)

出了什么问题?

1 个答案:

答案 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即可。