我认为这很简单但似乎比我想象的更具挑战性。
我想要一个文件被复制和粘贴附加时间戳。我使用此代码获取时间戳:
set hournum=%time:~0,2%
if %hournum% gtr 9 (set timeback=_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%h%time:~3,2%m%time:~6,2%s) else (set timeback=_%date:~10,4%%date:~4,2%%date:~7,2%_0%time:~1,1%h%time:~3,2%m%time:~6,2%s)
Set FileAffected=%1
echo %FileAffected:~0,-1%%timeback%
这将使文件FILE.TXT
成为FILE.TXT_2015-03-05_11h56m32s
但我显然希望它成为现实 FILE_20150305_11h56m32s.TXT
文件扩展名可以是任何扩展名或任何长度。谢谢你的帮助。
编辑:FileAffected与引号一起传递,所以我只是用~0,-1剥离它们。
我确实发现如果我这样做:
FOR /f %%i IN (%FileAffected%) DO (
ECHO filename=%%~fi
ECHO fileextension=%%~xi
)
如果我回显FileAffected,我得到带空格的完整路径名。但是,如果我使用FOR / F命令,文件名会在空格后截断任何内容。即使在“IN”命令中向“%FileAffected”变量添加额外的引号,仍然无法修复它,也不会在fi或xi周围添加引号。
%timeback%
不包括我的年份。我得到_3/01_18h31m52s
我的系统,其中上%date%
是15/03/2015