bat文件创建一个带日期的文件夹是不是加了天?
Bat file to create a folder with the date is not adding the day?
所以我试图让这个 BAT 创建一个带有日期的文件夹,我尝试了大约 5 种不同的变体,所有变体都创建了一个额外的文件夹,到目前为止我用过的最好的是
我目前正在使用的(不是我的代码,是从另一个线程获取的)
REM Create a folder using the current date. If such a folder already
exists, append a number to make it unique.
@ECHO OFF
for /F "tokens=2-5 delims=/ " %%i in ('date /t') do (
set Day=%%j
set Month=%%i
set Year=%%k
)
set Path=D:\share\Backup\Data %Year%-%Month%-%Day%
set /a inx=2
:LOOP
IF NOT EXIST "%Path%" GOTO CREATE
set Path=%~1\%Year%-%Month%-%Day% (%inx%)
set /a inx+=1
if %inx% gtr 9 goto :END REM Eh, giving up.
goto LOOP
:END
:CREATE
md "%Path%"
:END
这将创建此目录:"D:\share\Backup\Data -04-17" 如您所见,它不适用于当天。谁能帮我修改一下,这样一天就可以了。
编辑:示例的日期应为 2017 年 4 月 23 日或 23-04-17
编辑 2:按照建议更改了标记,请参阅下面的工作 BAT
REM Create a folder using the current date. If such a folder already exists, append a number to make it unique.
@ECHO OFF
for /F "tokens=1-5 delims=/ " %%i in ('date /t') do (
set Day=%%i
set Month=%%j
set Year=%%k
)
set DataPath=D:\share\Backup\Data %day%-%month%-%Year%
set /a inx=1
:LOOP
IF NOT EXIST "%DataPath%" GOTO CREATE
set DataPath=D:\share\Backup\Data %day%-%month%-%Year% (%inx%)
set /a inx+=1
if %inx% gtr 9 goto :END REM Eh, giving up.
goto LOOP
:END
:CREATE
md "%DataPath%"
:END
不,先生。这是缺少的年,因为创建日期是缺少-月-idunno
不知道您的日期格式是什么,很难指导。也许更改 tokens
可能会有所帮助。目前,令牌 2 分配给 %%i
,3 分配给 %%j
,4 分配给 %%k
。 Itry using tokens=1-5
and observed which elements get assigned to %%i
..%%m
using echo %%i+%%j+%%k+%%l+%%m
这将允许你 select 你想要的部分。
path
是一个 logcal 但作为变量名的选择非常糟糕,因为 path
是一个保留变量,它告诉 windows 在哪里可以找到当前文件中找不到的可执行文件目录。
所以我试图让这个 BAT 创建一个带有日期的文件夹,我尝试了大约 5 种不同的变体,所有变体都创建了一个额外的文件夹,到目前为止我用过的最好的是
我目前正在使用的(不是我的代码,是从另一个线程获取的)
REM Create a folder using the current date. If such a folder already
exists, append a number to make it unique.
@ECHO OFF
for /F "tokens=2-5 delims=/ " %%i in ('date /t') do (
set Day=%%j
set Month=%%i
set Year=%%k
)
set Path=D:\share\Backup\Data %Year%-%Month%-%Day%
set /a inx=2
:LOOP
IF NOT EXIST "%Path%" GOTO CREATE
set Path=%~1\%Year%-%Month%-%Day% (%inx%)
set /a inx+=1
if %inx% gtr 9 goto :END REM Eh, giving up.
goto LOOP
:END
:CREATE
md "%Path%"
:END
这将创建此目录:"D:\share\Backup\Data -04-17" 如您所见,它不适用于当天。谁能帮我修改一下,这样一天就可以了。
编辑:示例的日期应为 2017 年 4 月 23 日或 23-04-17
编辑 2:按照建议更改了标记,请参阅下面的工作 BAT
REM Create a folder using the current date. If such a folder already exists, append a number to make it unique.
@ECHO OFF
for /F "tokens=1-5 delims=/ " %%i in ('date /t') do (
set Day=%%i
set Month=%%j
set Year=%%k
)
set DataPath=D:\share\Backup\Data %day%-%month%-%Year%
set /a inx=1
:LOOP
IF NOT EXIST "%DataPath%" GOTO CREATE
set DataPath=D:\share\Backup\Data %day%-%month%-%Year% (%inx%)
set /a inx+=1
if %inx% gtr 9 goto :END REM Eh, giving up.
goto LOOP
:END
:CREATE
md "%DataPath%"
:END
不,先生。这是缺少的年,因为创建日期是缺少-月-idunno
不知道您的日期格式是什么,很难指导。也许更改 tokens
可能会有所帮助。目前,令牌 2 分配给 %%i
,3 分配给 %%j
,4 分配给 %%k
。 Itry using tokens=1-5
and observed which elements get assigned to %%i
..%%m
using echo %%i+%%j+%%k+%%l+%%m
这将允许你 select 你想要的部分。
path
是一个 logcal 但作为变量名的选择非常糟糕,因为 path
是一个保留变量,它告诉 windows 在哪里可以找到当前文件中找不到的可执行文件目录。