写一个bat 将文件夹下的文件的名称加上创建时间,精确到毫秒
时间: 2023-06-26 22:05:13 浏览: 185
可以使用以下的批处理脚本实现:
```
@echo off
setlocal EnableDelayedExpansion
set folder=%1
cd /d %folder%
for %%f in (*) do (
set "filename=%%~nf"
set "fileext=%%~xf"
for /f "usebackq delims=" %%a in (`wmic datafile where "name='%%~dpf%%~nxf'" get creationdate /format:list ^| findstr "="`) do (
set "creationdate=%%a"
)
set "creationdate=!creationdate:~0,8!-!creationdate:~8,6!"
ren "%%f" "!filename!_!creationdate!!fileext!"
)
```
使用方法:
将以上代码保存为 `.bat` 文件,然后将该文件放置到想要修改文件名称的文件夹下,双击运行即可。注意,需要传入该文件夹的路径作为参数,如:
```
rename_files.bat "C:\Users\username\Desktop\test"
```
其中 `C:\Users\username\Desktop\test` 是文件夹的路径。
相关问题
写一个bat 将本文件夹下的文件的名称加上创建时间,精确到毫秒
以下是一个可以实现你要求的 Windows 批处理脚本:
```bat
@echo off
setlocal enabledelayedexpansion
for %%F in (*) do (
set "oldName=%%F"
set "createTime=%%~tF"
set "millis=!createTime:~-2!"
set "createTime=!createTime:~0,-2!!millis!"
ren "!oldName!" "!oldName!_!createTime!"
)
```
解释一下上面的代码:
1. `@echo off` 关闭命令行窗口的回显。
2. `setlocal enabledelayedexpansion` 启用延迟环境变量扩展,这样我们才能在 for 循环中使用 `!` 符号来获取变量的值。
3. 使用 `for` 循环遍历当前文件夹中的所有文件。
4. 对于每个文件,分别获取其旧名称和创建时间。
5. 由于 Windows 的时间精度只能到秒,所以我们需要手动获取毫秒部分并将其加入到创建时间中。
6. 最后使用 `ren` 命令将文件重命名为旧名称加上创建时间。
注意:由于 `ren` 命令无法处理重名文件,所以如果有多个文件的创建时间相同,它们将会被重命名为同一个名称,最终只会保留其中一个文件。如果你需要保留所有文件,请在重命名时加上一个唯一的后缀。
用bat写一个获取当前文件夹下的所有图片和视频文件的创建日期,然后在文件名前面加上一个mv字符,在文件名后面加上创建日期,精确到秒,如果时间重复在后面加上序号,并且每个步骤加上10毫秒的延时,完成后需要点击确认,
@echo off
setlocal enabledelayedexpansion
rem 获取当前文件夹路径
set folder=%cd%
rem 获取当前文件夹下的所有图片和视频文件
set "ext=.jpg .jpeg .png .bmp .gif .mp4 .avi .mov .wmv"
for /f "delims=" %%a in ('dir /b /a-d "%folder%\*%ext%" 2^>nul') do (
rem 获取文件创建日期
set "ts="
for /f "tokens=1-6 delims=/: " %%b in ("%%~ta") do (
set "ts=!ts!%%b%%c%%d_%%e%%f%%g"
)
rem 拼接新文件名
set "newname=mv%%~na_!ts!%%~xa"
rem 解决重名问题
set "i=1"
:loop
if exist "!newname!" (
set /a i+=1
set "newname=mv%%~na_!ts!_!i!%%~xa"
goto loop
)
rem 重命名文件
ren "%%a" "!newname!"
rem 延时10毫秒
ping -n 1 -w 10 127.0.0.1 >nul
)
rem 提示用户确认
echo 重命名完成,请确认!
pause>nul
exit /b
阅读全文