Batch file 将月份作为数字写入txt文件的批处理
我需要一个批处理文件,当运行它保存当前月份作为一个数字到一个文本文件 ie;如果是四月,则将04保存到month.txt 此外,它还必须覆盖文件中已有的任何其他文本 ie;而不是文本最终看起来像这样: 04 04 04 04 -它只显示了最近的'04'。此外,不应添加其他空格或换行符。只是04(不多也不少) 提前感谢所有回复者。:) 嗯,(对我来说)不可能不断线,但试试这个:Batch file 将月份作为数字写入txt文件的批处理,batch-file,Batch File,我需要一个批处理文件,当运行它保存当前月份作为一个数字到一个文本文件 ie;如果是四月,则将04保存到month.txt 此外,它还必须覆盖文件中已有的任何其他文本 ie;而不是文本最终看起来像这样: 04 04 04 04 -它只显示了最近的'04'。此外,不应添加其他空格或换行符。只是04(不多也不少) 提前感谢所有回复者。:) 嗯,(对我来说)不可能不断线,但试试这个: echo %date:~3,2%>expected\destination\filename.txt 这就是我的
echo %date:~3,2%>expected\destination\filename.txt
这就是我的答案。不管你是否接受,希望它能帮助你 需要完成的任务有以下问题:
- 以独立于区域设置的方式检索当前月份(日期)李>
- 不向输出文件写入(最终)换行符李>
- 不修改当前的
状态李>ERRORLEVEL
set/p
命令实际上是为了提示用户为变量指定一个值。在脚本中,仅使用用户提示文本。与回声不同,显示字符串不包含最终换行符。为了不停止脚本并等待任何用户输入,将通过管道输入一个任意的echo
字符串。(我使用字符串“u”(echo
)而不仅仅是换行符(echo.
),因为后者将ERRORLEVEL
设置为1
)
请注意,set/p
的变量赋值实际上并不发生在批处理上下文中,因为管道会间歇性地创建新上下文。此外,变量值并不重要,只是用户提示文本。因此,您也可以编写set/psdummy=
而不是set/pdat=
set/p
用户提示文本周围需要双引号,以避免返回尾随空格(即使删除了
之前的空格)。我不知道为什么,但我想这可能是由命令行解释器读取重定向
的方式造成的
如果您对ERRORLEVEL
状态不感兴趣,可以删除cmd/C
部分,以便只保留括号之间的部分。
但是,如果不希望更改ERRORLEVEL
状态,请保留cmd/C
部分,该部分将恢复原始ERRORLEVEL
状态,因为:
- 命令解释器在执行任何命令之前读取整行李>
立即展开,因此存储其执行前的状态李>%ERRORLEVEL%
- 一旦执行
,实际的set/P
状态将被修改李>ERRORLEVEL
将exit%ERRORLEVEL%
状态设置回先前存储的原始状态李>ERRORLEVEL
环绕cmd/C
命令避免终止当前脚本李>exit
- 一旦执行
echo off&cls
,则它应该是@echo off
,因为不需要cls。而且,仍然不需要cls
。请重读问题。标签是批处理文件,不是cmd。感谢大家这么快的帮助。事实证明sachadee的代码(稍微修改)对我来说最合适。为什么要创建一个新变量?您可以直接使用%date%。事实证明是这样的。很抱歉这么做!
echo %date:~3,2%>expected\destination\filename.txt
@echo off
rem get locale-independent date/time string (YYYYMMDDHHMMSS...) by "WMIC" command;
for /F "tokens=2 delims==" %%I in ('wmic OS GET LocalDateTime /VALUE') do set DAT=%%I
rem the "%DAT:~4,2%" portion extracts the month numeral;
rem instead of just "echo"-ing the month numeral, use "set /P" user prompt text,
rem because this doesn't produce a final line-break unlike "echo" does;
rem then redirect the textual output of this to the text file;
rem since "set /P" modifies the ERRORLEVEL state, let's append the "cmd /C" portion;
(echo _| set /P DAT="%DAT:~4,2%" > month.txt) & cmd /C exit %ERRORLEVEL%