1

我正在尝试制作一个 bat 文件,该文件创建一个具有这种格式的 txt 文件:

"

[date]  
2013/29/07 
10:38:00 

"

该代码不适用于 bat 文件,只有当我使用复制粘贴将其放入 cmd 手册时:

echo [date]  > e:\TAG.txt
for /f "tokens=2-4 delims=/ " %i in ('date /t') do ( echo %k/%j/%i >> e:\TAG.txt goto :eof)
for /F "tokens=1-4 delims=: " %i in ('time /t') do echo %i:%j:00 >> e:\TAG.txt

我究竟做错了什么?

4

4 回答 4

1

在 Batchfiles 中,将 for 循环中的 % 翻倍:

echo [date]  > e:\TAG.txt
for /f "tokens=2-4 delims=/ " %%i in ('date /t') do ( echo %%k/%%j/%%i >> e:\TAG.txt goto :eof)
for /F "tokens=1-4 delims=: " %%i in ('time /t') do echo %%i:%%j:00 >> e:\TAG.txt

(单 % 用于命令行,双 %% 在批处理文件中 - 但仅在 for 循环中)

于 2013-07-29T08:42:04.337 回答
1

您需要在批处理文件中替换%为。%%

你不需要goto :eof里面。即使您需要,也必须&在两个命令之间使用。

在时间部分,你不需要 4 个参数,只需要 2 个。

还考虑使用%DATE%and%TIME%而不是调用TIME /Tand DATE /T

echo [date]  > e:\TAG.txt
for /f "tokens=2-4 delims=/ " %%i in ("%date%") do echo %%k/%%j/%%i >> e:\TAG.txt
for /F "tokens=1-2 delims=: " %%i in ("%time%") do echo %%i:%%j:00 >> e:\TAG.txt

编辑:对于单行:

echo [date]  > e:\TAG.txt
for /f "tokens=2-7 delims=/ " %%i in ("%date%/%time::=/%") do echo %%k/%%j/%%i %%l:%%m:%%n >> e:\TAG.txt
于 2013-07-29T09:17:43.003 回答
0

这种技术消除了填充和不同区域设置/计算机设置的问题。

@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%

>e:\TAG.txt echo [date]
>>e:\TAG.txt echo %yyyy%/%dd%/%mm%
>>e:\TAG.txt echo %hh%:%min%:%sec%
于 2013-07-29T09:42:52.933 回答
0

只需将 start 添加到行首。

你的批处理文件的内容应该是这样的:

start for /f "tokens=2-4 delims=/ " %i in ('date /t') do echo %k/%j/%i >> e:\TAG.txt
于 2013-07-29T08:27:26.383 回答