Slo*_*unk 1 date batch-file output
我有一个批处理文件,将日期格式化为YYYYMMDD并将其存储为变量.但是,当我想生成文件名中包含日期的文本输出文件时,它会在日期之后删除所有内容.有人可以帮忙吗?您将在我的示例中注意到您将获得带有文本的输出文件,但文件名将是日期,并且.txt扩展名将被删除.
@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
Run Code Online (Sandbox Code Playgroud)
您的最终SET语句有一个不需要的尾随空格.这导致重定向
> 2015-01-12 .txt在扩展变量之后变为.我想你现在可以看到它失败的原因.
当然,您只需从批处理脚本中删除有问题的空间即可.但是有一个简单的策略可以防止无意中的尾随字符 - 将整个SET表达式括在引号内.最后一个引用后的所有"正常"文本将被安全地忽略,因此无意的尾随空格不会导致问题.特殊字符,如&,|,>,等还有最后一个引号后的意思.
set "var=value" Everything after the last quote is ignored/effectively a comment
Run Code Online (Sandbox Code Playgroud)
开头报价在变量名之前是至关重要的.
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |