代码之家  ›  专栏  ›  技术社区  ›  Anirudh Goel

此代码对应的批处理文件

  •  2
  • Anirudh Goel  · 技术社区  · 15 年前

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

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

     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 回复  |  直到 15 年前
        1
  •  4
  •   Joey    15 年前

    这是行不通的,因为当您尝试在中引用正在更改的变量时,需要延迟变量扩展 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 仅当代码运行时,而不是当行(在本例中为完成 如果 语句)进行分析。

    但是,批量直接翻译C代码可能更像以下内容:

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

    如果愿意,可以添加提示,尽管C程序也没有:)。现在您可以将批处理程序的输出作为一个整体进行管道处理,或者只添加一个 >> file 在那里有很好的措施。