写一个bat 将文件夹下的文件的名称加上创建时间,精确到毫秒
时间: 2023-06-26 10:05:13 浏览: 67
可以使用以下的批处理脚本实现:
```
@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将当前文件夹下非文件夹的文件名修改为文件名后面加上创建时间,
可以使用以下的批处理命令来实现:
```
@echo off
for %%f in (*) do (
if not %%~df == %cd% (
set "datetime="
for /f "usebackq delims=" %%a in (`wmic datafile where "name='%%f'" get creationdate ^| findstr /r "^[0-9]"`) do set "datetime=%%a"
if defined datetime (
set "filename=%%~nf_!datetime:~0,4!!datetime:~4,2!!datetime:~6,2!_!datetime:~8,2!!datetime:~10,2!!datetime:~12,2!%%~xf"
ren "%%f" "!filename!"
)
)
)
```
上面的代码会循环当前文件夹下的所有文件,排除文件夹,并为每个文件名添加创建时间。具体地,它会使用 WMIC 命令获取文件的创建时间,然后将其格式化为“YYYYMMDD_HHMMSS”的形式,并将其添加到文件名的末尾。最后,使用 ren 命令将原始文件名更改为新的文件名。请注意,此脚本仅在 Windows 系统上运行。