标题: [文本处理] 批处理如何将多个文件以其创建日期时间重命名 [打印本页]
作者: mm123321 时间: 2016-9-22 16:38 标题: 批处理如何将多个文件以其创建日期时间重命名
本帖最后由 pcl_test 于 2016-9-22 20:17 编辑
文件夹下面文件,按创建时间重命名,精确到秒,麻烦了 真的不会!
比如一个文件夹下面生成了下列文件:
刘德华.mp4
张学友.mp4
黎明.mp4
郭富城.mp4
他们创建的时间分别是:
2016年9月22日16点36分51秒
2016年9月22日16点36分56秒
2016年9月22日16点37分04秒
2016年9月22日16点38分13秒
批处理一下变成:
2016-09-22-16-36-51.mp4
2016-09-22-16-36-56.mp4
2016-09-22-16-37-04.mp4 (4秒这个地方用两位数字填充,不要 2016-09-22-16-37-4 )
2016-09-22-16-38-13.mp4
我只能精确到分钟 ,而且不能按照上面的方式重命名! 麻烦大神了!
精确到分钟的代码如下:
@echo off&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
)
作者: DiamondbacK 时间: 2016-9-22 19:03
本帖最后由 DiamondbacK 于 2016-9-22 20:01 编辑
- PowerShell -c "Get-ChildItem *.* | Rename-Item -NewName { ('{0:s}' -f $_.CreationTime -replace '[ T:]', '-') + $_.extension }"
复制代码
- PowerShell -c "Get-ChildItem *.* | Rename-Item -NewName { ('{0:yyyy-MM-dd-HH-mm-ss}' -f $_.CreationTime) + $_.extension }"
复制代码
作者: WHY 时间: 2016-9-22 21:08
- @echo off
- set "MyPath=%~p0"
- pushd "%~dp0"
- for /f "tokens=1*" %%i in ('wmic DataFile where "Drive='%~d0' and Path='%MyPath:\=\\%'" get CreationDate^,Name^|find ":"') do (
- for /f "delims=" %%j in ("%%j") do (
- if /i not "%~f0" == "%%~fj" (
- set "s=%%~ni"
- setlocal enabledelayedexpansion
- set "s=!s:~0,4!-!s:~4,2!-!s:~6,2!-!s:~8,2!-!s:~10,2!-!s:~-2!"
- set "name=!s!%%~xj"
- for /l %%k in (1 1 100) do if exist "!name!" set "name=!s!-%%k%%~xj"
- for %%k in ("!name!") do endlocal & ren "%%~fj" "%%~k"
- )
- )
- )
- pause
复制代码
作者: pcl_test 时间: 2016-9-24 00:18
本帖最后由 pcl_test 于 2016-9-24 12:59 编辑
- //&cls&dir /a-d/b|findstr /v "%~nx0$"|cscript -nologo -e:jscript "%~f0"&pause&exit
-
- Date.prototype.Format = function(){
- function add(t){return t>9?t:'0'+t}
- var y = this.getFullYear();
- var M = this.getMonth()+1;
- var d = this.getDate();
- var h = this.getHours();
- var m = this.getMinutes();
- var s = this.getSeconds();
- return y+'-'+add(M)+'-'+add(d)+'-'+add(h)+'-'+add(m)+'-'+add(s)
- }
-
- var fso = new ActiveXObject('Scripting.FileSystemObject')
- while(!WSH.StdIn.AtEndOfStream){
- var line = WSH.StdIn.ReadLine();
- var f = fso.GetFile(line);
- var dt = (new Date(f.DateCreated)).Format();
- var fpath = fso.GetParentFolderName(line);
- var oldname = fso.GetBaseName(line);
- var fext = fso.GetExtensionName(line);
- var newname = dt+(fext?'.'+fext:'');
- var tf = (fpath?fpath+'\\':'')+newname;
- if(oldname.indexOf(dt)<0){ //不处理文件名末尾已带有创建日期时间的文件
- if(fso.FileExists(tf)){
- f.Name = oldname+'_'+newname; //如果出现重名则保留原文件名
- }else f.Name = newname;
- }
- }
- WSH.Echo('Done');
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |