Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file cmd,从txt写入和读取_Batch File_Cmd - Fatal编程技术网

Batch file cmd,从txt写入和读取

Batch file cmd,从txt写入和读取,batch-file,cmd,Batch File,Cmd,我在玩弄cmd,想写一个小应用程序,它包含一个简单的功能,从txt文件中读取计数器,然后使用它,最后将计数器提高1 set /p x=<file.txt ... set /a y=x+1 echo %y%>file.txt set/px=file.txt 问题是它总是返回“ECHO ist eingeschaltet(ON)”,这表示由于某种原因,ECHO处于打开(ON)状态。有人能解释一下它是从哪里来的以及如何修复它吗?我不需要任何花哨的东西。我只想让它工作并知道我的错误在哪里

我在玩弄cmd,想写一个小应用程序,它包含一个简单的功能,从txt文件中读取计数器,然后使用它,最后将计数器提高1

set /p x=<file.txt
...
set /a y=x+1
echo %y%>file.txt
set/px=file.txt

问题是它总是返回“ECHO ist eingeschaltet(ON)”,这表示由于某种原因,ECHO处于打开(ON)状态。有人能解释一下它是从哪里来的以及如何修复它吗?我不需要任何花哨的东西。我只想让它工作并知道我的错误在哪里。

Echo on意味着批处理中执行的所有内容也会显示在控制台中。因此,您可以看到命令,并在下面的一行中看到结果。 您可以使用
echo off
命令或在要隐藏的命令前面加上
@
符号来关闭此功能

所以


Echo on表示批处理中执行的所有内容也显示在控制台中。因此,您可以看到命令,并在下面的一行中看到结果。 您可以使用
echo off
命令或在要隐藏的命令前面加上
@
符号来关闭此功能

所以


首先,我想向您展示
echo
命令行的外观:

> "file.txt" echo(%y%

这是您的原始代码行:

echo %y%>file.txt
出现意外输出的原因是
ECHO处于打开状态。
/
ECHO处于关闭状态。
是因为
ECHO
命令没有接收到任何要回显的内容(键入并阅读帮助文本以了解
打开
/
关闭
的含义)。假设
y
携带值
2
,则行扩展为:

echo 2>file.txt
此处的数字
2
不会被视为在此处回声,而是被重定向消耗;根据这篇文章,
2>
构成了一个重定向操作符,告诉我们用句柄
2
(STDERR)将流重定向到给定的文件。这样的手柄可以从
0
到达
9

有一些方法可以克服这个问题:

  • 在回显文本和重定向操作符之间插入空格:

    echo %y% >file.txt
    
    缺点是空间成为回音文本的一部分

  • echo
    命令周围放置括号:

    (echo %y%)>file.txt
    
  • 将重定向部分放置在命令行的开头:

    >file.txt echo %y%
    
  • 我更喜欢最后一个选项,因为这是最通用、最安全的解决方案。此外,还有改进的余地:

    • 引用文件路径/名称,以避免在包含空格或其他特殊字符时出现问题
    • 使用奇数语法
      echo(
      可以输出所有内容,甚至是空字符串或文本字符串,如
      打开
      关闭
      /?

      > "file.txt" echo(%y%
      

    提示:

    若要查看实际情况,请不要双击批处理文件的图标来运行批处理文件;打开命令提示符窗口并键入其(带引号的)路径,这样该窗口将保持打开状态,显示所有命令回显和错误消息。此外,要调试批处理文件,请不要将
    @echo关闭
    (或者通过前面的
    rem
    注释它,或者使用
    @echo on
    )查看命令回音。

    首先,我想向您展示
    echo
    命令行的外观:

    > "file.txt" echo(%y%
    

    这是您的原始代码行:

    echo %y%>file.txt
    
    出现意外输出的原因是
    ECHO处于打开状态。
    /
    ECHO处于关闭状态。
    是因为
    ECHO
    命令没有接收到任何要回显的内容(键入并阅读帮助文本,了解
    /
    的含义)。假设
    y
    带有值
    2
    ,则行扩展为:

    echo 2>file.txt
    
    此处的数字
    2
    不会在此处回传,而是被重定向使用;根据文章,
    2>
    构成重定向操作符,告诉使用句柄
    2
    (STDERR)将流重定向到给定文件。这样的句柄可以从
    0
    到达
    9

    有一些方法可以克服这个问题:

  • 在回显文本和重定向操作符之间插入空格:

    echo %y% >file.txt
    
    缺点是空间成为回音文本的一部分

  • echo
    命令周围放置括号:

    (echo %y%)>file.txt
    
  • 将重定向部分放置在命令行的开头:

    >file.txt echo %y%
    
  • 我更喜欢最后一个选项,因为这是最通用、最安全的解决方案。此外,还有改进的余地:

    • 引用文件路径/名称,以避免在包含空格或其他特殊字符时出现问题
    • 使用奇数语法
      echo(
      可以输出所有内容,甚至是空字符串或文本字符串,如
      打开
      关闭
      /?

      > "file.txt" echo(%y%
      

    提示:

    若要查看实际情况,请不要双击批处理文件的图标来运行批处理文件;打开命令提示符窗口并键入其(带引号的)路径,这样该窗口将保持打开状态,显示所有命令回显和错误消息。此外,要调试批处理文件,请不要将
    @echo关闭
    (或者通过前面的
    rem
    注释掉它,或者使用
    @echo on
    )查看命令回音。

    我想我知道了回音的作用,尽管应用程序速度太快,无法以任何方式查看控制台。命令在控制台中是否可见对我来说都无关紧要。我想知道为什么y设置为“echo已打开(打开)”而不是计数器+1我想我得到了echo的用途,尽管应用程序速度太快,无法以任何方式查看控制台。命令在控制台中是否可见对我来说都无关紧要。我想知道为什么y设置为“echo已打开(打开)”而不是柜台+1感谢的反馈。现在工作。不欢迎!请考虑这对您帮助最多的点击绿色支票