2

嗨,我想在批处理文件中实现这个 C 代码

int i;
scanf("%d", &i);
for(int j = 0;j<i;j++)
{
  scanf("%d",&j);
  printf("%d",j);
}

我将在 DOS 中使用 > 重定向运行 c 程序,以便打印输出以文件形式出现。我想在我的批处理文件中做同样的事情,我可以写类似的东西

 echo %variable% >> file

但这对我不起作用

@echo off
for %%i in (1 2 3) do (
set /p c=enter a name?
echo %%i
echo %c% >> file.txt
)

怎么了?

4

1 回答 1

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解析行(在这种情况下是完整的语句)时评估。

不过,直接批量翻译您的 C 代码可能看起来更像以下内容:

@echo off
set /p i=
:loop
set /p j=
echo %j%
set /a j+=1
if %j% LSS %i% goto loop

如果您愿意,您可以添加提示,尽管 C 程序也没有:)。现在您可以将批处理程序的输出作为一个整体进行管道传输,或者只是>> file在其中添加一个以进行良好测量。

于 2009-03-23T19:06:15.673 回答