如何使用 Batch 在文件夹名称中创建一个目录 date/time?
how to create a directory with date/time in foldername with Batch?
我的批处理文件中有以下代码:
FOR /L %%G IN (1,1,%1) DO (
set dt="%date:~10%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2%"
mkdir %resultsFolder%\Iteration-%%G_%dt%
)
但我看到输出为:
set dt="201501231433"
mkdir C:\Temp\Iteration-1_
我在 mkdir 命令中没有看到 "dt" 的值。这里有什么问题?
您需要使用延迟扩展:
SETLOCAL EnableDelayedExpansion
FOR /L %%G IN (1,1,%1) DO (
set dt=%date:~10%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2%
REM Updated command to use delayed 'dt' variable.
mkdir "%resultsFolder%\Iteration-%%G_!dt!"
)
ENDLOCAL
没有延迟扩展,%dt%
在 FOR
循环开始时计算。在这种情况下,当 FOR
循环第一次被解析时它是空的,所以它在循环的整个生命周期内都将保持为空。通过延迟扩展,!dt!
会在每次迭代时进行评估。
请注意,我还调整了您路径中的引用用法。
但是,如果您的目标是让所有文件夹都具有相同的时间戳,则您真的不需要将 dt
计算放入 FOR
循环中。你可以通过简单地移动这个语句来完成整个事情而不会延迟扩展:
set dt=%date:~10%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2%
FOR /L %%G IN (1,1,%1) DO (
mkdir "%resultsFolder%\Iteration-%%G_%dt%"
)
我的批处理文件中有以下代码:
FOR /L %%G IN (1,1,%1) DO (
set dt="%date:~10%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2%"
mkdir %resultsFolder%\Iteration-%%G_%dt%
)
但我看到输出为:
set dt="201501231433"
mkdir C:\Temp\Iteration-1_
我在 mkdir 命令中没有看到 "dt" 的值。这里有什么问题?
您需要使用延迟扩展:
SETLOCAL EnableDelayedExpansion
FOR /L %%G IN (1,1,%1) DO (
set dt=%date:~10%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2%
REM Updated command to use delayed 'dt' variable.
mkdir "%resultsFolder%\Iteration-%%G_!dt!"
)
ENDLOCAL
没有延迟扩展,%dt%
在 FOR
循环开始时计算。在这种情况下,当 FOR
循环第一次被解析时它是空的,所以它在循环的整个生命周期内都将保持为空。通过延迟扩展,!dt!
会在每次迭代时进行评估。
请注意,我还调整了您路径中的引用用法。
但是,如果您的目标是让所有文件夹都具有相同的时间戳,则您真的不需要将 dt
计算放入 FOR
循环中。你可以通过简单地移动这个语句来完成整个事情而不会延迟扩展:
set dt=%date:~10%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2%
FOR /L %%G IN (1,1,%1) DO (
mkdir "%resultsFolder%\Iteration-%%G_%dt%"
)