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

时间:2011-03-30 11:46:36

标签: windows batch-file

我对windows .bat文件语法不太了解。我的简单要求是在特定位置创建一个文件夹,其名称为当前日期。我尝试在谷歌搜索这个但没有得到任何好的选择。有没有办法做到这一点?

25 个答案:

答案 0 :(得分:36)

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

答案 1 :(得分:20)

快速而肮脏:如果您可以使用UTC而不是本地日期,则可以使用:

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

适用于所有语言区域。但是,仅在XP及更高版本上。

答案 2 :(得分:17)

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

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

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

答案 3 :(得分:14)

你需要摆脱日期中的'/'字符才能在mkdir中使用它,如下所示:

setlocal enableextensions
set name=%DATE:/=_%
mkdir %name%

答案 4 :(得分:8)

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

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

答案 5 :(得分:7)

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%

答案 6 :(得分:6)

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

为此,请创建批处理文件并添加以下内容

echo %date%    
pause

它产生一个输出,在我的例子中它显示了05/15/2015。

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

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

set temp=%DATE:/=%

如果你回复" temp",你可以看到没有斜杠的日期。

现在您需要做的就是按照您想要的方式格式化日期。

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

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

的值

05062015。

现在将每个字符定位为以0开头的数字。

  

Fri 0506201 5

     

01234567891011

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

2015年,其中2位于第8位,因此从第8位到第4位,将在2015年。

06月,其中0位于第6位,所以从第6位到第2位,将成为06.

第05天,其中0位于第4位,所以从第4位到2位,将成为05.

所以最后要设置最终格式,我们有以下内容。

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    
set temp=%DATE:/=%
set dirname="%temp:~8,4%%temp:~6,2%%temp:~4,2%"
mkdir %dirname%

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

将在此批处理执行的位置创建目录。

答案 7 :(得分:5)

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

来自:Ali's Knowledge Base

答案 8 :(得分:4)

我遇到了问题,因为我的服务器绝对必须以MM / dd / yyyy格式保存日期,而我希望该目录为YYYY-MM-DD格式以保持整洁。无论您将区域设置设置为何种格式,如何以YYYY-MM-DD格式获取它。

了解使用%DATE%时显示的内容:

从命令提示符下键入:

ECHO %DATE%

我的出现03/06/2013(截至2013年3月6日)

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

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

答案 9 :(得分:3)

这应该有效:

mkdir %date%

如果没有,请尝试:

setlocal enableextensions
mkdir %date%

答案 10 :(得分:2)

如果您的语言区域的日期格式为“DDMMYYYY”,则必须按以下方式设置:

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

答案 11 :(得分:2)

我和我一样坐在与你完全相同的船之前10我不能使用下面的,我把时间设定为12小时到24小时,改为hh / mm到HH / mm我试过最多我能找到的代码。下面至少会有所帮助。调整并修复:)

以下可能也有帮助

设置DD =%DATE:~0.2%

设置MM =%DATE:~3,2%

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

设置YYYY =%DATE:~6,4%

设置hh =%hh:= 0%

设置mm =%TIME:~3,2%

如果"%时间:~0.1%" ==" " (set folderdate = 0%time:~1.1%)ELSE set folderdate =%time:~0,2%

mkdir folderdate =%date:~6 %% date:~3,2 %% date:~0,2%_%folderdate %% time:~3,2%

copy \ Makereport * .CSV \ Makereport \%folderdate%\

cd%folderdate% REM - (7zip in c:\ batch) 路径= c:\ batch

7z a Retail.zip * .CSV -pRetailPassword

CD ..

del * .csv

答案 12 :(得分:1)

你会喜欢这样,改变它以便它符合你的要求。

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

答案 13 :(得分:1)

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

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

命令 %日期:〜1.3% 返回值 周一

命令 %日期:〜10.4% 返回值 2015年

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

命令 md%date:~10,4 %% date:~7,2 %% date:~4,2% 创建一个名为的目录 20151123

同样如果您的日期字符串格式为 2015年11月23日(星期一)

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

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

答案 14 :(得分:1)

这对我有用,请尝试:

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

答案 15 :(得分:1)

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

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

答案 16 :(得分:0)

在替换之前,我使用下一个代码制作文件副本(例如test.txt

cd /d %~dp0
set backupDir=%date:~7,2%-%date:~-10,2%-%date:~-2,2%_%time:~0,2%.%time:~3,2%.%time:~6,2%
echo make dir %backupDir% ...
md "%backupDir%"
copy test.txt %backupDir%

它将创建格式为DD-MM-YY_HH.MM.SS的目录,并将text.txt放在此处。 创建目录时需要名称中以秒为单位的时间,而无需进行其他验证。

答案 17 :(得分:0)

对于带有 HUN 设置的 YYYY.MM.DD 格式,请使用以下内容。它转换“2021. 02. 23”。到“2021.02.23”:

SET dirname="%date:~0,5%%date:~6,3%%date:~10,2%"
md %dirname%

答案 18 :(得分:0)

这对我来说效果更好

@echo off    
set temp=%DATE:/=%
set dirname="%temp:~4,4%%temp:~2,2%%temp:~0,2%"
mkdir %dirname%

答案 19 :(得分:0)

使用我制作的此批处理脚本:

@echo off
title Folder Creator
color b
setlocal enabledelayedexpansion
echo Enter the folder name, you can use these codes:
echo /t - Time (eg. 16:29)
echo /d - Date (eg. 17-02-19)
echo /a - Day (eg. 17)
echo /m - Month (eg. 02)
echo /y - Year (eg. 19)
echo /f - Full Year (eg. 2019)
echo.
set /p foldername=Folder Name:
set foldername=%foldername:/t=!time:~0,5!%
set foldername=%foldername:/d=!date:~0,2!-!date:~3,2!-!date:~8,2!%
set foldername=%foldername:/a=!date:~0,2!%
set foldername=%foldername:/m=!date:~3,2!%
set foldername=%foldername:/y=!date:~8,2!%
set foldername=%foldername:/f=!date:~6,4!%
md %foldername%

例如,如果您要创建一个以 DD-MM-YY 格式命名的日期的文件夹,则可以键入“ / d ”,但如果要这样做您将以 DD-MM-YYYY 格式输入“ / a - / m - / f

答案 20 :(得分:0)

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%"

答案 21 :(得分:0)

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

@ 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

答案 22 :(得分:-1)

我需要日期和时间并使用:

mkdir %date%-%time:~0,2%.%time:~3,2%.%time:~6,2%

创建了一个类似于以下内容的文件夹: 2018-10-23-17.18.34

必须将时间串联起来,因为它包含:,而Windows不允许使用。

答案 23 :(得分:-1)

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

答案 24 :(得分:-1)

void SignalMonitor::init() {
  for (int i = 0; i < MAX_MONITORS; ++i) {
    if (monitors[i] == NULL) {
      callbackIndex = i;
      monitors[i] = this;
      break;
    }
  }

  if (callbackIndex < 0)
    throw "Maximum number of SignalMonitor instances reached";

  wiringPiISR(dataPin, INT_EDGE_BOTH, smCallbacks[callbackIndex]);
}

仅创建一个文件夹,例如“ Tue 01_28_2020”