我有一个批处理文件,它运行几个进行表修改的python脚本.
我想让用户注释掉他们不想运行的1-2个python脚本,而不是从批处理文件中删除它们(所以下一个用户知道这些脚本作为选项存在!)
我还想添加注释,以便特别注意它们在运行之前需要在批处理文件中更新的变量.我明白我可以用了REM.但看起来更像是在用户运行后更新用户的进度.
是否有更适当添加评论的语法?
在Bash中,#用于评论以下内容.如何在Windows命令行上发表评论?
我找到了这个程序http://baiyunmanor.com/blog/work/get-current-date-time-in-dos-batch-file/
但我不知道该怎么回事
:: datetime.bat
Run Code Online (Sandbox Code Playgroud)
到底意味着什么?
注意 - 此问题基于在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=....要区分这两种情况是不可能的.(正如我所说,这是一个学术问题,而不是一个实际问题!)
我的批处理文件有问题(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添加注释,因此没有模棱两可的余地,但我发现::风格更容易阅读.
在我的代码中,我循环遍历字符串中的每个字符。我需要测试字符是否为空格。
这是我的代码:
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)
我在测试字母或数字时不会出错。我究竟做错了什么?
谢谢,
扎克
我的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) batch-file ×6
windows ×4
comments ×2
cmd ×1
command ×1
command-line ×1
commenting ×1
dos ×1
file ×1
goto ×1
windows-7 ×1