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

53

我对Windows的批处理文件语法不是很了解。我的简单需求是在特定位置创建一个以当前日期命名的文件夹。我尝试在Google上搜索,但没有找到任何好的选项。有没有什么办法可以做到这一点?


25个回答

2

如果我早于上午10点,我和你们一样无法使用下面的代码。我已将我的时间从12小时制更改为24小时制,并将hh / mm更改为HH / mm。我尝试了大部分能找到的代码。以下内容可能会有所帮助。请调整并修复:

以下内容也可能有所帮助:

set DD = % DATE:〜0,2%

set MM = % DATE:〜3,2%

set YY = % DATE:〜8,2%

set YYYY = % DATE:〜6,4%

set hh = % hh:= 0%

set mm = % TIME:〜3,2%

if“% time:〜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在c:\批处理中) Path = c:\ batch

7z a Retail.zip *。CSV-pRetailPassword

cd..

del * .csv


2
如果您的语言环境使用日期格式“DDMMYYYY”,则必须按照以下方式进行设置:
set datestr=%date:~-4,4%%date:~3,2%%date:~-10,2%
mkdir %datestr%

2
该表达式%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的目录。
同样,如果您的日期字符串格式为Monday,23/Nov/2015,
命令md %date:~16,4%%date:~12,3%%date:~9,2%创建名为2015Nov23的目录。
如果意外返回文件夹名称中不允许的日期字符串字符或使用无效的p和n值,则会出现错误。此外,如果返回包含\的值,则可能会在文件夹内创建文件夹。

2
这是一个更简单的解决方案。
@ECHO OFF
set name=%date%
echo %name%
mkdir %name% 

1
感谢所有提供的信息,非常有帮助。我需要一个可以在同一目录下每分钟创建“备份”文件夹并在脚本中调用它的工具。以下是我想出来的解决方案:
@ 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。

1
我使用下面的代码来复制一个文件 (例如 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。在名称中包含秒数是必要的,以便不需要进行额外的验证即可创建目录。

1
这对我有效,尝试一下:
ECHO %DATE:~7,2%_%DATE:~4,2%_%DATE:~12,2%

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

@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”。

1

您会喜欢这个,将其更改以适应您的要求。

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

0

这个对我来说效果更好,

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

1
为什么?不是为了我(和世界上90%的人) - jeb
也许是我的区域设置问题,这样做效果更好;我不会出现那些“Fri”开头的字符。 - rodolfoprado

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接