使用bat文件创建文件夹

时间:2009-02-22 11:30:05

标签: batch-file

我需要编写一个bat文件,使用文件夹名称的当前日期和时间创建一个新文件夹。 我想出了以下内容:

for /f "tokens=1-3 delims=:," %%i in ("%TIME%") do md %DATE%-%%i.%%j.%%k

此代码是否有任何缺陷?是否有更简单/更自然的方式来做到这一点?

8 个答案:

答案 0 :(得分:24)

您可以使用子字符串以及内置的%DATE%和%TIME%变量来执行此操作:

@echo OFF

:: Use date /t and time /t from the command line to get the format of your date and
:: time; change the substring below as needed.

:: This will create a timestamp like yyyy-mm-dd-hh-mm-ss.
set TIMESTAMP=%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%-%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%

@echo TIMESTAMP=%TIMESTAMP%

:: Create a new directory
md "%1\%TIMESTAMP%"

答案 1 :(得分:6)

我用这个球棒

for /F "tokens=1-4 delims=. " %%i in ('date /t') do (
set Day=%%i
set Month=%%j
set Year=%%k
)

for /F "tokens=1-4 delims=: " %%i in ('time /t') do (
set Hour=%%i
set Minute=%%j
set Second=%%k
)


md %1\%Year%-%Month%-%Day%

希望它有所帮助。

答案 2 :(得分:1)

我无法完成上述许多工作,但成功使用了原始的海报命令。

这是我的版本:

for / f“tokens = 1-3 delims =:/”%% i in(“%DATE%”)do set DATESTAMP = %% i。%% j。%% k
@echo目录将以此名称制作:
@echo备份。%DATESTAMP% 备份。%DATESTAMP%
@echo目录制作,现在正在进行文件复制......
@echo请确保电脑没有电子邮件或任何文件打开。
暂停
cd backup。%DATESTAMP%
md“共享文件”
xcopy“c:\ documents and settings \ all users \ documents \ documents”“Shared Documents”/ E / C / I / H / Q
@echo in Documents Complete。

等:)

答案 3 :(得分:1)

简单的%time%不起作用的原因是因为它的分隔符:批处理脚本中不允许这样做。但是这个应该可以正常工作:

对我来说非常好。

Rem Get Day,Mth & Year from %Date%
set Day=%Date:~0,2%
set Mth=%Date:~3,2%
set Yr=%Date:~6,4%
REM Get Hour and Min from %Time%
set Hour=%Time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
set Min=%Time:~3,2%

mkdir %date%-%hour%.%min%

答案 4 :(得分:0)

你有没有尝试使用此代码将使用日期和时间保存为new_folder_maker.bat的新文件夹制作者

:start
@echo off
md new_folder_%date%_%time%
exit

答案 5 :(得分:0)

这是我的解决方案(修改了lopkiju)。它使用日期戳创建一个文件夹。如果已存在该名称的文件夹,请向其附加一个整数以使其唯一。将其放在.bat文件中,并将路径传递到父文件夹 在Windows 7 Home Premium x64中测试。

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=%~1\%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

答案 6 :(得分:0)

您可以使用date.exe的格式说明符来利用GNU sh-utils

for /f "delims=" %%a in ('date.exe +%%Y-%%m-%%d.%%H-%%M') do @set dd=%%a
md %dd%

对于本地化版本的Windows,此解决方案尤为重要。

for循环运行一次,但是需要它,因为没有更简单的方法来分配一个变量,其值来自命令的输出。

使用date --help获取格式说明符的完整列表。

答案 7 :(得分:0)

这对我很有用

dkdir foldername

cd foldername

dkdir %date% %time% 

cls