如何在批处理(.bat)文件中创build名称为当前date的文件夹

我不太了解windows .bat文件的语法。 我的简单要求是在名称为当前date的特定位置创build一个文件夹。 我试图在谷歌search,但没有得到任何好的select。 有没有办法做到这一点?

Solutions Collecting From Web of "如何在批处理(.bat)文件中创build名称为当前date的文件夹"

试试这个(相当于bash反引号):

for /f "tokens=1* delims=" %%a in ('date /T') do set datestr=%%a mkdir %datestr% 

有关更多信息,请参阅http://ss64.com/nt/for_cmd.html

 mkdir %date:~-4,4%%date:~-10,2%%date:~7,2% 

快速和肮脏:如果你可以住在日期是UTC而不是本地,你可以使用:

 for /f "skip=1" %%d in ('wmic os get localdatetime') do if not defined mydate set mydate=%%d md %mydate:~0,8% 

适用于所有地区 只有在XP和更高版本,虽然。

你需要在日期之前摆脱“/”字符,然后才能在mkdir中使用它,如下所示:

 setlocal enableextensions set name=%DATE:/=_% mkdir %name% 
 echo var D = new Date() > tmp.js echo D = (D.getFullYear()*100+D.getMonth()+1)*100+D.getDate() >> tmp.js echo WScript.Echo( 'set YYYYMMDD='+D ) >> tmp.js echo @echo off > tmp.bat cscript //nologo tmp.js >> tmp.bat call tmp.bat mkdir %YYYYMMDD% 
 for /F “tokens=1-4 delims=/ ” %%A in ('date /t') do ( set DateDay=%%A set DateMonth=%%B set DateYear=%%C ) set CurrentDate=%DateDay%-%DateMonth%-%DateYear% md %CurrentDate% 

这会给你一个新建立的日期为今天的文件夹,格式为DD-MM-YY

源自: 阿里的知识库

如果你想要mm-dd-yyyy格式,你可以使用:

 mkdir %date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4% 

我有一个问题,因为我的服务器ABSOLUTELY必须有它的日期在MM / DD / YYYY格式,而我想目录是YYYY-MM-DD格式整洁。 以下是如何使用YYYY-MM-DD格式,无论您的区域设置如何。

找出使用%DATE%时显示的内容:

从命令提示符下键入:

 ECHO %DATE% 

矿已于2013年6月3日(截至2013年3月6日)

因此,要获取目录名称为2013-03-06,请将其编码到您的批处理文件中:

 SET dirname="%date:~6,4%-%date:~0,2%-%date:~3,2%" mkdir %dirname% 

这取决于计算机的区域设置,因此首先使用命令提示符或通过进行日期回显来检查日期的输出。

为此,创建一个批处理文件并添加下面的内容

 echo %date%<br\> pause 

它产生一个输出,在我的情况下,它显示2015年5月6日星期五。

现在我们需要摆脱斜线(/)

为此,在批处理文件中包含以下代码。

 set temp=%DATE:/=% 

如果你回显“温度”,你可以看到没有斜线的日期。


现在您只需要按照自己想要的方式格式化日期。

例如,我需要格式为YYYYMMDD的日期,然后我需要如下所示设置dirname

为了解释这是如何工作的,我们需要比较temp的值

星期五05062015。

现在使用从0开始的数字来定位每个字符。

周五0506201 5

01234567891011

所以对于我需要的日期格式是20150605,

2015年,其中2位在第8位,从第8位到第4位,2015年。

06年第6位,第6位,第6位,第2位,第06位。

第五天,第四位,第四位,第二位,第五位,第五位。

所以最后设置最终的格式,我们有下面的。

 SET dirname="%temp:~8,4%%temp:~6,2%%temp:~4,2%" 

要在日期,月份和年份之间使用“ – ”或“_”来增强日期格式,可以使用下面的方法进行修改

 SET dirname="%temp:~8,4%-%temp:~6,2%-%temp:~4,2%" 

要么

 SET dirname="%temp:~8,4%_%temp:~6,2%_%temp:~4,2%" 

所以最终的批处理代码将会是

================================================== ====

 @echo off<br\> set temp=%DATE:/=%<br\> set dirname="%temp:~8,4%%temp:~6,2%%temp:~4,2%"<br\> mkdir %dirname%<br\> 

================================================== ====

该目录将在该批处理执行的地方被创建。

这应该工作:

 mkdir %date% 

如果没有,请尝试以下操作:

 setlocal enableextensions mkdir %date% 

这是一个更简单的解决方案。

 @ECHO OFF set name=%date% echo %name% mkdir %name% 

这适用于我,尝试:

 ECHO %DATE:~7,2%_%DATE:~4,2%_%DATE:~12,2% 

我坐在和你一样的船上,只要我是上午10点我不能使用下面,我已经设置了我的时间从12小时到24小时,改变赫/毫米至HH /毫米我已经尝试了大部分的代码我能找到。 下面至少会有一点帮助。 调整和修复:)

下面也可以帮助

设定DD =%DATE:〜0.2%

设定MM =%DATE:〜3.2%

设置YY =%DATE:〜8,2%

设置YYYY =%DATE:〜6.4%

设hh =%hh:= 0%

设定mm =%时间:〜3.2%

如果“%time:〜0,1%”==“”(设置folderdate = 0%时间:〜1,1%)ELSE set folderdate =%time:〜0.2%

mkdir folderdate =%date:〜6 %% date:〜3,2 %% date:〜0.2%_%folderdate %% time:〜3,2%

复制\ Makereport * .CSV \ Makereport \%folderdate%\

cd%folderdate%REM – (7zip in c:\ batch)Path = c:\ batch

7z a Retail.zip * .CSV -pRetailPassword

光盘..

del * .csv

你会喜欢这个,改变它,以便它可以满足你的要求。

 mkdir today Copy Desktop\test1\*.* today setlocal enableextensions set name=%DATE:/=_% Rename "today" _OlddatabaseBackup_"%name%" 

表达式%date:~p,n%从日期字符串中的位置p返回n个字符。

如果我的系统日期字符串是Mon23 / 11/2015

命令%date:〜1,3%返回值Mon

命令%date:〜10,4%返回值2015

并与md(或mkdir)命令结合使用

命令md%date:〜10,4 %% date:〜7,2 %% date:〜4,2%生成一个名为20151123的目录

同样如果你的日期字符串格式为星期一,23 / Nov / 2015

命令md%date:〜16,4 %% date:〜12,3 %% date:〜9,2%创建一个名为2015Nov23的目录

如果您不小心从日期字符串中返回文件夹名称中不允许的字符,或者对p和n使用无效值,则会出现错误。 此外,如果您返回包含\的值,则可能会在文件夹内创建一个文件夹。

如果您的语言环境的日期格式为“DDMMYYYY”,则必须按照以下方式进行设置:

 set datestr=%date:~-4,4%%date:~3,2%%date:~-10,2% mkdir %datestr% 

https://stackoverflow.com/a/31789045/1010918 foxidrive的答案帮助我得到我想要的日期和时间的文件夹。 我想在这里分享这个方法,因为它对我很好,我认为它可以帮助其他人,无论他们的地区。

 rem The four lines below will give you reliable YY DD MM YYYY HH Min Sec MS variables in XP Pro and higher. for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%" set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%" & set "MS=%dt:~15,3%" set "dirname=%YYYY%-%MM%-%DD% %HH%-%Min%-%Sec%" :: remove echo here if you like echo "dirName"="%dirName%" 

感谢所有的信息,非常有帮助。 我需要一些可以在同一目录中每分钟创建一个“备份”文件夹的东西,以及稍后在脚本中调用它。 以下是我想到的:

 @ echo off CD %userprofile%\desktop SET Datefolder="%DATE:~4,2%-%DATE:~7,2%-%DATE:~12,2%_%time:~1,1%%time:~3,2%" MD "%Datefolder%" 

这给了我一个名为:mm-dd-yy_hmm(小时分钟)的当前登录用户桌面上的文件夹,即:07-28-15_719

 G: cd G:/app/ mkdir %date:~7,2%%date:~-10,2%%date:~-4,4% cd %date:~7,2%%date:~-10,2%%date:~-4,4% sqlplus sys/sys as sysdba @c:/new