标题: [日期时间] 请问批处理如何把当前文件夹里所有文件,加上修改日期的前缀呢 [打印本页]
作者: nova636 时间: 2023-9-14 15:18 标题: 请问批处理如何把当前文件夹里所有文件,加上修改日期的前缀呢
我自己写了一个bat脚本,
但是运行脚本后,会丢掉修改日期的年和月,只有日,时,分。请问是哪里出的问题呢,谢谢!- @echo off
- setlocal enabledelayedexpansion
-
- for %%F in (*) do (
- rem 获取文件的最后修改日期和时间
- for %%a in ("%%~tF") do (
- set "datetime_str=%%~na"
- )
-
- rem 去掉日期和时间中的空格和冒号,只保留数字部分
- set "formatted_datetime=!datetime_str: =!"
- set "formatted_datetime=!formatted_datetime::=!"
-
- rem 重命名文件
- ren "%%F" "!formatted_datetime!_%%F"
- )
-
- endlocal
复制代码
作者: thp2008 时间: 2023-9-14 15:40
我有个现成的年月日时分秒的代码,给你参考。没有点- @echo off
- echo.
- echo 年-月-日-小时-分钟-秒
- set datevar1=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
- echo "%datevar1%.jpg"
- echo.
- echo 年-月-日
- set datevar2=%date:~0,4%%date:~5,2%%date:~8,2%
- echo "%datevar2%.jpg"
- echo.
- echo 小时-分钟-秒
- set datevar3=%time:~0,2%%time:~3,2%%time:~6,2%
- echo "%datevar3%.jpg"
- echo.
- echo.
复制代码
作者: 77七 时间: 2023-9-14 16:15
- @echo off
- setlocal enabledelayedexpansion
-
- for %%F in (*) do (
- rem 获取文件的最后修改日期和时间
- echo %%~tF
- for %%a in ("%%~tF") do (
- set "datetime_str=%%~na"
- echo set "datetime_str=%%~na"
- )
- pause
- rem 去掉日期和时间中的空格和冒号,只保留数字部分
- set "formatted_datetime=!datetime_str: =!"
- set "formatted_datetime=!formatted_datetime::=!"
-
- rem 重命名文件
- ren "%%F" "!formatted_datetime!_%%F"
- )
-
- endlocal
- pause
复制代码
作者: Five66 时间: 2023-9-14 16:22
日期格式问题?
例如英文系统默认日期连接符是斜杠("/") 2023/09/14
作者: Batcher 时间: 2023-9-14 16:36
回复 1# nova636
执行这个代码:- @echo off
- setlocal enabledelayedexpansion
- for %%F in (*) do (
- echo %%~tF
- pause
- for %%a in ("%%~tF") do (
- set "datetime_str=%%~na"
- echo !datetime_str!
- pause
- )
- )
复制代码
可以发现结果如下:
2023/09/08 13:51
请按任意键继续. . .
08 13:51
请按任意键继续. . .
内层for循环认为斜线左侧的是文件夹,只有斜线最右侧的是文件名,所以%%~na只能获取到【日 时 分】
在你的代码基础上修改如下:- @echo off
- setlocal enabledelayedexpansion
- for %%F in (*) do (
- if "%%F" neq "%0" (
- set "datetime_str=%%~tF"
- REM 去掉日期和时间中的空格、冒号、斜线,只保留数字部分
- set "formatted_datetime=!datetime_str: =!"
- set "formatted_datetime=!formatted_datetime::=!"
- set "formatted_datetime=!formatted_datetime:/=!"
- ren "%%F" "!formatted_datetime!_%%F"
- )
- )
复制代码
作者: nova636 时间: 2023-9-14 20:25
搞定了,谢谢大家。- @echo off
- setlocal enabledelayedexpansion
-
- for %%F in (*) do (
- if "%%F" neq "%0" (
- set "datetime_str=%%~tF"
- rem 去掉日期和时间中的空格、冒号、斜线,只保留数字部分
- set "formatted_datetime=!datetime_str: =!"
- set "formatted_datetime=!formatted_datetime::=!"
- set "formatted_datetime=!formatted_datetime:/=!"
- ren "%%F" "!formatted_datetime!_%%F"
- )
- )
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |