如何使用批处理脚本只获得修改年份?

时间:2013-12-25 06:20:12

标签: windows batch-file

我遇到了问题

我需要修改文件的日期。我使用Windows批处理脚本。但是我无法获得修改日期并拆分它们。

我目前正在使用此命令

for /f %a in ('dir /b') do @echo %a %~ta

结果

file89401.txt 06/18/2005 05:37 AM
file8941.txt 11/21/2000 03:48 PM
file89411.txt 09/02/2008 02:14 PM
file89421.txt 03/01/2012 02:06 PM
file89431.txt 10/23/2001 06:48 AM
file89441.txt 10/27/2010 10:21 AM
file89451.txt 11/11/2011 05:40 AM
file89461.txt 11/23/2000 02:48 AM
file89471.txt 10/10/2001 01:28 AM
file89481.txt 07/14/2000 10:17 AM
file89491.txt 02/21/2004 10:24 PM
file89501.txt 03/12/2011 09:42 AM
file8951.txt 09/26/2003 11:31 PM
file89511.txt 08/17/2001 02:31 AM
file89521.txt 01/01/2004 01:11 PM

我只需要修改日期和格式

2005/06/18
2000/1/21
2008/09/02
2012/03/01
2001/10/23
2010/10/27
2011/11/11
2000/11/23
2001/10/10
2000/07/14
2004/02/21
2011/03/12
2003/9/26
2001/08/17
2004/01/01

请帮助我,对不起我的英语不好:(

3 个答案:

答案 0 :(得分:1)

假设您希望在目录 C:\ Users \ test 下看到文件的修改日期,格式为 yyyy / mm / dd ,下面适用于您:< / p>

@echo off
setlocal

for %%F in ("C:\Users\test\*") do (
for /f "tokens=1,2,3 delims=/ " %%A in ("%%~tF") do (
echo %%C/%%A/%%B
   )
 )

<强>结果:

2013/12/21
2013/11/19
2012/12/28
2012/10/25
2011/10/25
2011/11/09
2010/12/21

答案 1 :(得分:0)

findstr只能输出日期/时间,而不能仅输出日期。 您可以使用某些代码修复它或使用执行您想要的命令:

forfiles /c "cmd /c echo @fdate"

这不是一个很好的knwon命令,但它会给你日期。 有关详细信息,请参阅forfiles /?

将日期格式化为所需的格式使用:

for /f "tokens=1,2,3 delims=." %%a in (' forfiles /m *.* /c "cmd /c echo @fdate" ') do echo %%c/%%b/%%a 

(注意,这是语言相关的这条线是德语格式(“25.12.2013”​​) 对于你的格式echo %%c/%%a/%%b应该做的伎俩)

修改 刚注意到,你想要在一天或一个月没有前导零。

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2,3 delims=." %%a in (' forfiles /m *.* /c "cmd /c echo @fdate" ') do (
  set dat=%%c/%%a/%%b
  set dat=!dat:/0=/!
  REM replaced "/0" with "/"
  echo %!dat!
)

答案 2 :(得分:0)

从提示符开始,

for %a in (*.*) do @for /f "delims=/ " %i in ("%~ta") do @echo %k/%i/%j

应该送货。

作为批处理文件,

@echo off
for %%a in (*.*) do for /f "delims=/ " %%i in ("%%~ta") do echo %%k/%%i/%%j