修改下这段代码,获取文件的创建时间,@echo on&setlocal enabledelayedexpansion for /f "delims=" %%a in ('dir /a-d /b') do ( set "t=%%~ta" set "t=!t:~0,4!-!t:~5,2!-!t:~8,2! !t:~11,2!.!t:~14,2!" if not "%~n0"=="%%~na" if not exist "!t!%%~xa" (ren "%%~nxa" "!t!%%~xa") else ( call :rennum "%%~nxa") ) goto :eof : rennum set n=1 :loop set "name=%~1" set "ext=%~x1" if not exist "!t!-!n!!ext!" (ren "%name%" "!t!-!n!!ext!") else ( set /a n+=1 goto loop )
时间: 2023-06-25 14:06:13 浏览: 54
这段代码是 Windows 批处理脚本,用于将当前目录下的文件重命名为它们的创建时间。修改后的代码如下,可获取文件的创建时间并打印输出:
```batch
@echo off
for /f "delims=" %%a in ('dir /a-d /b') do (
for /f "delims=" %%b in ('powershell (Get-Item "%%~fa").CreationTime.ToString("yyyy-MM-dd HH.mm.ss")') do (
set "t=%%b"
set "name=%%~na"
set "ext=%%~xa"
echo File name: !name!!ext!, Created time: !t!
)
)
```
这段代码使用了嵌套的 for 循环,通过调用 PowerShell 获取文件的创建时间,并将其格式化为字符串。将文件名、扩展名和创建时间存储在变量中,最后打印输出。你可以根据需要修改输出内容或将其存储在文件中。
相关问题
@echo off setlocal enabledelayedexpansion for /f "delims=" %%i in ('dir /b 周志华《Machine Learning》*') do ( echo %%i set var=%%i set var=!var:*周志华《Machine Learning》=! echo %%i !var! ren "%%i" "!var!" ) pause
这是一个批处理脚本,用于重命名以"周志华《Machine Learning》"开头的文件。脚本会将"周志华《Machine Learning》"后面的部分作为新的文件名。具体的操作步骤如下:
1. 使用`dir /b 周志华《Machine Learning》*`命令获取以"周志华《Machine Learning》"开头的文件列表。
2. 使用`for /f "delims=" %%i in ('...') do (...`循环遍历文件列表中的每个文件。
3. 在循环体中,首先使用`echo %%i`打印当前文件名。
4. 然后使用`set var=%%i`将当前文件名赋值给变量var。
5. 启用延迟扩展,使用`setlocal enabledelayedexpansion`命令。
6. 使用`set var=!var:*周志华《Machine Learning》=!`将var变量中"周志华《Machine Learning》"后面的部分截取出来,并重新赋值给var变量。
7. 使用`echo %%i !var!`打印当前文件名和新的文件名。
8. 最后使用`ren "%%i" "!var!"`命令将当前文件名重命名为新的文件名。
9. 使用`pause`命令暂停脚本的执行,以便查看输出结果。
请注意,这段代码需要在批处理脚本中运行,并且只能在Windows操作系统上使用。
解释一下这段代码,分行解释一下,@echo on&setlocal enabledelayedexpansion for /f "delims=" %%a in ('dir /a-d /b') do ( set "t=%%~ta" set "t=!t:~0,4!-!t:~5,2!-!t:~8,2! !t:~11,2!.!t:~14,2!" if not "%~n0"=="%%~na" if not exist "!t!%%~xa" (ren "%%~nxa" "!t!%%~xa") else ( call :rennum "%%~nxa") ) goto :eof : rennum set n=1 :loop set "name=%~1" set "ext=%~x1" if not exist "!t!-!n!!ext!" (ren "%name%" "!t!-!n!!ext!") else ( set /a n+=1 goto loop )
这段代码是一个 Windows 批处理脚本,用于将指定目录下的所有文件名改为以文件最后修改时间命名的格式。
1. @echo on:打开命令行窗口的回显功能,即执行命令时将命令本身输出到屏幕上。
2. setlocal enabledelayedexpansion:开启延迟环境变量扩展功能。
3. for /f "delims=" %%a in ('dir /a-d /b') do ( ... ):对指定目录下的非目录文件进行循环操作。
4. set "t=%%~ta":获取文件的最后修改时间并将其赋值给变量 t。
5. set "t=!t:~0,4!-!t:~5,2!-!t:~8,2! !t:~11,2!.!t:~14,2!":将 t 变量中的时间字符串格式化为 YYYY-MM-DD HH:mm 的形式。
6. if not "%~n0"=="%%~na" if not exist "!t!%%~xa" (ren "%%~nxa" "!t!%%~xa") else ( call :rennum "%%~nxa"):如果文件名不等于当前脚本的文件名,并且以当前时间格式命名的文件不存在,则将文件名改为以当前时间格式命名。否则调用 :rennum 子程序。
7. goto :eof:结束当前子程序。
8. :rennum:定义 :rennum 子程序。
9. set n=1:给变量 n 赋初值 1。
10. :loop:定义循环标签 loop。
11. set "name=%~1":获取文件名并将其赋值给变量 name。
12. set "ext=%~x1":获取文件扩展名并将其赋值给变量 ext。
13. if not exist "!t!-!n!!ext!" (ren "%name%" "!t!-!n!!ext!") else ( set /a n+=1 goto loop ):如果以当前时间格式加上序号命名的文件不存在,则将文件名改为以当前时间格式加上序号命名,否则将序号加 1 并继续循环。