gpt4 book ai didi

windows - 我应该在批处理文件中使用哪种注释样式?

转载 作者:行者123 更新时间:2023-12-03 04:04:22 26 4
gpt4 key购买 nike

我一直在编写一些批处理文件,并且遇到了 this user guide ,内容非常丰富。它向我展示的一件事是,不仅可以用 REM 来注释行。 ,还可以使用 :: 。它说:

Comments in batch code can be made by using a double-colon, this is better than using the REM command because labels are processed before redirection symbols. ::<remark> causes no problems but rem <remark> produces errors.

为什么我看到的大多数指南和示例都使用 REM命令?是::适用于所有版本的 Windows?

最佳答案

tl;dr: REM 是在批处理文件中嵌入注释的有记录且受支持的方法。

<小时/>

:: 本质上是一个永远无法跳转到的空白标签,而 REM 是一个不执行任何操作的实际命令。在这两种情况下(至少在 Windows 7 上)重定向运算符的存在都不会导致问题。

但是,众所周知,:: 在某些情况下会在 block 中表现错误,不会被解析为标签,而是解析为某种驱动器号。我对具体位置有点模糊,但仅此一点就足以让我专门使用 REM。这是在批处理文件中嵌入注释的有记录且受支持的方法,而 :: 只是特定实现的产物。

<小时/>

下面是 ::FOR 循环中产生问题的示例。

此示例无法在桌面上名为 test.bat 的文件中运行:

@echo off
for /F "delims=" %%A in ('type C:\Users\%username%\Desktop\test.bat') do (
::echo hello>C:\Users\%username%\Desktop\text.txt
)
pause

虽然此示例可以正确用作注释:

@echo off
for /F "delims=" %%A in ('type C:\Users\%username%\Desktop\test.bat') do (
REM echo hello>C:\Users\%username%\Desktop\text.txt
)
pause

问题似乎是在尝试将输出重定向到文件时出现的。我最好的猜测是,它将 :: 解释为名为 :echo 的转义标签。

关于windows - 我应该在批处理文件中使用哪种注释样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12407800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com