Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何为昨天创建日期戳_Batch File - Fatal编程技术网

Batch file 如何为昨天创建日期戳

Batch file 如何为昨天创建日期戳,batch-file,Batch File,我正在尝试获取文件的内容,文件名中带有昨天的日期戳(WH.fbtbtt20130214.csv)。我为today创建了一个日期戳变量,但在google中找不到任何东西告诉我如何使用相同的格式将日期戳回溯一天。以下是我在批处理文件中创建的代码: @echo off REM ***** 20130215 MS Define DateStamp variable ***** Set DateStamp=%date:~10,4%%date:~4,2%%date:~7,2% Set DateStamp=

我正在尝试获取文件的内容,文件名中带有昨天的日期戳(WH.fbtbtt20130214.csv)。我为today创建了一个日期戳变量,但在google中找不到任何东西告诉我如何使用相同的格式将日期戳回溯一天。以下是我在批处理文件中创建的代码:

@echo off

REM ***** 20130215 MS Define DateStamp variable *****
Set DateStamp=%date:~10,4%%date:~4,2%%date:~7,2%
Set DateStamp=%DateStamp%
REM Set DateStamp=20130212

echo DateStamp: %DateStamp%

任何帮助/指导都将不胜感激。谢谢。

我找到了答案。以防有人感兴趣:

Set/A日期戳=(%日期:~10,4%%日期:~4,2%%日期:~7,2%)-1


回显日期戳:%DateStamp%

您不能总是从日期中减去1,然后得到昨天的日期。假设是3月1日。昨天是什么?3月0日?不是那样的。更好的方法是使用vbscript的
Date()
对象并从中减去一天

@echo off
setlocal
REM ***** 20130215 MS Define DateStamp variable *****
echo d = DateAdd^("d", -1, Date^(^)^)>yesterday.vbs
echo wscript.echo DatePart^("yyyy", d^) ^& "/" ^& DatePart^("m", d^) ^& "/" ^& DatePart^("d", d^)>>yesterday.vbs
for /f "tokens=1-3 delims=/" %%I in ('cscript /nologo yesterday.vbs') do (
    set Year=%%I
    if %%J LEQ 9 (set Month=0%%J) else set Month=%%J
    if %%K LEQ 9 (set Day=0%%K) else set Day=%%K
)
set DateStamp=%Year%%Month%%Day%
del /q yesterday.vbs
echo %DateStamp%

那是行不通的。如果今天的日期是2014年1月1日,你认为会发生什么?20140101变为20140100,但您需要20131231。另一个可能副本的可能副本:。我想还有其他人。谢谢你的信息。我没有意识到这是批处理的工作方式。我感谢你的纠正。我试试vbscript。好久没用了。