【发布时间】:2017-12-11 08:57:54
【问题描述】:
我正在尝试理解批处理脚本中的for 循环;特别是 skip 和 tokens 参数。我在这个answer 中找到了一个很好的例子,然后是这个很好的read。
我想看看如何从 Windows XP 中的 dir 中提取日期和时间,与 Windows 7 相比,dir 的输出(见下面的示例输出)略有不同. 换句话说,如何提取Windows XP中特定文件夹的创建日期。
上述链接中的以下修改代码在 Windows 7 中正确提取 DIR 的日期和时间,但在 Windows XP 中失败(即提取其他字符):
SETLOCAL ENABLEDELAYEDEXPANSION
set "path_of_folder=C:\folderA\folderB"
for /f "skip=5 tokens=1,2,4 delims= " %%a in (
'dir /ad /tc "%path_of_folder%\."') do IF "%%c"=="." (
set "dt=%%a"
set dirdate=%%a
set dirtime=%%b
echo !dirdate!, !dirtime!
set dirday=!dirdate:~0,2!
echo !dirday!
)
在 Windows 7 中,命令提示符中的 dir 命令输出类似于:
Directory of C:\Windows
12/21/2016 12:56 <DIR> .
12/21/2016 12:56 <DIR> ..
09/18/2017 07.42 678 config
在 Windows XP 中,命令提示符中的 dir 命令输出类似于:
Directory of C:\WINDOWS
12/21/2016 12:56 PM <DIR> .
12/21/2016 12:56 PM <DIR> ..
09/18/2017 07.42 PM 678 config
唯一的区别(据我所知)是PM 列(?)在 Windows 7 中不存在,但在 Windows XP 中存在。
我知道这可能是一个微不足道的问题,但我是批处理脚本的新手,看到一个使用复杂 for 循环的特定示例将有助于我的理解。 假设使用延迟扩展。
【问题讨论】:
-
这取决于控制面板中的时间设置。您可以更改它们或使用 VBScript 或 Jscript。
-
check this 它始终以与控制面板设置无关的相同格式打印文件夹时间。
-
@npocmaka 感谢您的注释,但我无法从 VBScript 或 Jscript 更改它们。这是让我看一个具体的例子(即如何修改代码以在 XP 的
dir输出下工作,如问题所示)。 -
我发给你的链接是一个打包在bat文件中的jscript,所以调用它很容易。如果需要,您可以更改格式。告诉我你需要的格式,我会举个例子......
-
@npocmaka 抱歉刚刚注意到链接。它非常有用,但为了让我了解
for循环,通过像上面这样的特定示例,这对我没有用。
标签: batch-file for-loop windows-7 windows-xp