相关疑难解决方法(0)

如何在批处理/ cmd中"注释掉"(添加注释)?

我有一个批处理文件,它运行几个进行表修改的python脚本.

  1. 我想让用户注释掉他们不想运行的1-2个python脚本,而不是从批处理文件中删除它们(所以下一个用户知道这些脚本作为选项存在!)

  2. 我还想添加注释,以便特别注意它们在运行之前需要在批处理文件中更新的变量.我明白我可以用了REM.但看起来更像是在用户运行后更新用户的进度.

是否有更适当添加评论的语法?

comments cmd commenting batch-file comment-conventions

816
推荐指数
7
解决办法
116万
查看次数

我如何评论Windows命令行?

在Bash中,#用于评论以下内容.如何在Windows命令行上发表评论?

windows command-line comments

140
推荐指数
6
解决办法
16万
查看次数

49
推荐指数
4
解决办法
3万
查看次数

为什么我不能在Windows 7上访问名为__CD__的变量?

注意 - 此问题基于在Windows 7上观察到的行为.我认为该行为适用于从Vista开始的所有其他版本.基于MC ND的答案和Foxidrive的评论,它不适用于XP.

我可以使用伪动态变量%CD%来获取当前目录,而不是尾随\.如果我定义一个名为CD using的真实变量set "CD=someValue",则%CD%返回我指定的值,而不是当前目录.

一个鲜为人知的动态变量是%__CD__%相同的%CD%,除了它包括尾部\.但是,如果我这样做set "__CD__=someValue",我无法访问我指定的值!我可以set __CD__看到我的变量存在我的指定值,但%__CD__%总是返回当前目录!

有没有人知道这个%__CD__%机制是如何工作的(为什么它与任何其他动态变量不同)?

有人能想出一种方法来__CD__使用标准批处理命令(不解析输出set __CD__)来访问我的变量吗?

这更像是一个学术问题,而不是一个实际问题.没有人应该定义名称与动态变量匹配的变量.


我不希望解析结果的例程的原因set __CD__是因为值可以在其中包含换行符.有人可以定义两个变量,__CD__或者__CD__2,或者他们可以定义__CD__一个包含换行后跟的值__CD__2=....要区分这两种情况是不可能的.(正如我所说,这是一个学术问题,而不是一个实际问题!)

batch-file environment-variables windows-7

14
推荐指数
3
解决办法
2368
查看次数

意外"系统无法找到指定的驱动器." 在批处理文件中

我的批处理文件有问题(Windows 7 x64).我已设法将其减少到以下(有两个空的注释行;似乎没有关于是否有实际的注释):

@echo off

if /i [%1]==[] (
    echo A
    ::
    ::
    echo B
)
Run Code Online (Sandbox Code Playgroud)

将它放在批处理文件中,然后在没有参数的情况下运行它会产生以下输出:

A
The system cannot find the drive specified.
B
Run Code Online (Sandbox Code Playgroud)

删除的一个::线条,或删除周围if,修复让你获得预期的输出的事情:

A
B
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?为什么要寻找驱动器?

编辑

感谢您的回复.所以我的问题可以归结为:

确定::"评论开始"或"驱动字母冒号"​​的含义是什么规则?

也许更容易切换回REM添加注释,因此没有模棱两可的余地,但我发现::风格更容易阅读.

windows batch-file

12
推荐指数
2
解决办法
2万
查看次数

批量测试变量是否等于空格

在我的代码中,我循环遍历字符串中的每个字符。我需要测试字符是否为空格。

这是我的代码:

if %str% == " " (
    ::echo Empty
    echo | set /p=%space%
    goto loopEnd
)
Run Code Online (Sandbox Code Playgroud)

我也试过:

if [%str%] == [" "] (
    ::echo Empty
    echo | set /p=%space%
    goto loopEnd
)
Run Code Online (Sandbox Code Playgroud)

两者都给出错误

( was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)

或者

] was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)

我在测试字母或数字时不会出错。我究竟做错了什么?

谢谢,

扎克

windows batch-file

7
推荐指数
1
解决办法
2480
查看次数

Windows批处理文件与goto命令无法正常工作

我的GOTO命令和附属标签有问题.

事实:鉴于来自文件夹的一堆文件(它们是日志错误),我需要打开它们并检查它们是否包含特定的字符串.如果是,则从文件名中删除一些字符(最后一次出现"_"后的所有字符,包括其自身)并执行其他操作.

为了切断字符,我正在循环使用GOTO命令,如我在此处所述:http://www.robvanderwoude.com/battech_while_loops.php

该脚本是:

@echo off
setlocal EnableDelayedExpansion

cls

for %%X in (D:\e-pub\outbox\logs\*.*) do (

    for /F "tokens=7" %%S in (%%X) do (

        if /i "%%S"=="<ml>" (
            SET fisier=%%~nX
            SET cond=!fisier:~-1!
            SET fisier=!fisier:~0,-1!

            :loopStart
            rem condition to break the loop
            if !cond!==_ goto loopEnd
            SET cond=!fisier:~-1!
            SET fisier=!fisier:~0,-1!
            goto loopStart

            :loopEnd

            rem here it should be out of a loop
            rem other stuff to do with var !fisier!
            rem the following line is not executed because of …
Run Code Online (Sandbox Code Playgroud)

windows command goto file batch-file

4
推荐指数
1
解决办法
7495
查看次数