首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理文件日期变量和输出问题

批处理文件日期变量和输出问题
EN

Stack Overflow用户
提问于 2016-01-12 17:38:13
回答 1查看 71关注 0票数 1

我有一个批处理文件,它将将日期格式化为YYYYMMDD,并将其存储为变量。但是,当我想要生成一个包含文件名中日期的文本输出文件时,它会在日期之后删除所有内容。有人能帮忙吗?在我的示例中,您会注意到您将得到一个带有文本的输出文件,但是文件名将是日期,.txt扩展名将被删除。

代码语言:javascript
复制
@echo off
SETLOCAL ENABLEEXTENSIONS
if "%date%A" LSS "A" (set toks=1-3) else (set toks=2-4)
for /f "tokens=2-4 delims=(-)" %%a in ('echo:^|date') do (
  for /f "tokens=%toks% delims=.-/ " %%i in ('date/t') do (
    set '%%a'=%%i
    set '%%b'=%%j
    set '%%c'=%%k))
if %'yy'% LSS 100 set 'yy'=20%'yy'%
set Today=%'yy'%-%'mm'%-%'dd'% 
ENDLOCAL & SET v_year=%'yy'%& SET v_month=%'mm'%& SET v_day=%'dd'%

set mydate=%V_Year%%V_Month%%V_Day% 
echo text for output file > %mydate%.txt
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-12 18:10:38

最后一个SET语句有一个不必要的尾随空间。这将导致重定向变成

变量展开后的> 2015-01-12 .txt。我想你现在能明白它为什么失败了。

当然,您可以简单地从批处理脚本中删除违规空间。但是有一种简单的策略,可以防止无意中的尾随字符--将整个集合表达式括在引号中。最后引号后的所有“正常”文本将被安全地忽略,因此无意中的尾随空格不会造成问题。像&|>等特殊字符在最后的引号之后仍然有意义。

代码语言:javascript
复制
set "var=value" Everything after the last quote is ignored/effectively a comment

重要的是,开头引号在变量名称之前。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34750299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档