从批处理文件创建文本文件的问题

Issue creating a text file from a batch file

我正在尝试创建一个文本文件,其名称中包含一个变量:

mkdir logs
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
set filename=build_%mydate%_%mytime%
gradlew build > I:\TNB_XPort_Redux\logs\%filename%x.txt

当我 运行 批处理文件时,我将其作为输出:

关于如何将文件正确创建为文本文件的任何想法?

编辑:我希望将文件命名为:build_date_time.txt 而不是 build_date_time

您可以使用以下方法在您选择的路径中创建一个空白文本文件:

mkdir logs
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
break>"I:\TNB_XPort_Redux\logs\build_%mydate%_%mytime%.txt"

这段代码将创建一个目录 "logs",并在该目录中创建一个空白文件 "build_%mydate%_%mytime%.txt"。

或者,您可以使用更长的方法来设置文件名变量,就像您在示例中所做的那样。

mkdir logs
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
set filename=build_%mydate%_%mytime%
break>"I:\TNB_XPort_Redux\logs\%filename%.txt"

总而言之,他们都做同样的事情

试试

mkdir logs
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set "mydate=%%c-%%a-%%b")
For /f "tokens=1-2 delims=/: " %%a in ('time /t') do (set "mytime=%%a%%b")
set "filename=build_%mydate%_%mytime%"
gradlew build > "I:\TNB_XPort_Redux\logs\%filename%.txt"

虽然在我的系统中我无法重现观察到的行为,但可以通过在时间戳后插入 space 来重新创建。引号将防止在行尾包含结尾 spaces 以及文件名中出现 spaces 时的问题。