Batch file 问题:从批处理文件创建文本文件

Batch file 问题:从批处理文件创建文本文件,batch-file,text-files,Batch File,Text Files,我试图创建一个文本文件,但文件名中有一个变量: 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 b

我试图创建一个文本文件,但文件名中有一个变量:

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\u date\u time.txt而不是build\u date\u 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\u%mydate%\u%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日志
对于/f“tokens=2-4 delims=/”('date/t')do中的%%a(设置“mydate=%%c-%%a-%%b”)
对于/f“令牌=1-2个delims=/:”('time/t')do中的%%a(设置“mytime=%%a%%b”)
设置“文件名=生成\%mydate%\%mytime%”
gradlew build>“I:\TNB\u export\u Redux\logs\%filename%.txt”

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

在运行gradlew之前回显filename变量。你可能有某种奇怪的性格或什么。否则,请重新检查您的代码,并确保输出文件路径实际上以.txt结尾。这一切都很顺利,谢谢。我错过了引语,现在它的效果和预期的一样。