在Linux中通常使用touch命令来更新一个文件的访问时间,但在Windows环境中并没有这个命令。这给我们带来了一定的不便,因为在软件开发中,常常希望使用touch来更新版本控制文件的访问时间,并使用编译器自定义的__DATE__和__TIME__变量来获得软件的构建时间。以STM32CubeIDE为例,在Windows环境下,虽然我们可以在系统设置中指定Pre-build Steps,但似乎缺乏一个合适的Windows命令来执行类似Linux环境下的touch操作。
假设我们定义一个C++源文件version.cpp
,其中定义软件编译的日期和时间如下:
const char * const build_date = __DATE__;
const char * const build_time = __TIME__;
为了保证每次编译都获得正确的日期和时间信息,我们需要更新version.cpp
的访问时间。我们当然可以每次手动保存一下该文件,但那样的操作琐碎而容易忘记,并显得十分笨拙。最好的方法是编译的时候让系统自动完成类似的操作。
Windows环境的touch等效命令
网上有一些文章介绍怎么使用Windows环境下的命令来实现Linux touch的功能,例如:
C:\> copy version.cpp+
C:\> type nul >> "file.txt"
- 另外,在PowerShell环境中,可以使用:
PS C:\>