2012-07-11 38 views
0

这是我的情况。我有几百个文件夹(在Windows XP下), ,每个文件夹都包含几个.jpgs文件。当我不小心选择了其中一个文件夹的 重命名过程中的所有文件夹时,所有文件夹的名称全部变成了 。DOS批处理脚本 - 将目录重命名为其最近文件的日期

什么我设置了要做的就是写一个DOS批处理脚本,将 迭代通过每个文件夹,确定目录&内 最新文件的修改日期的文件夹,该日期重命名 YYYY-MM -DD格式。因此:

Directory of C:\Work_Area\Messed_up_dir_name 

07/11/2012 10:01 AM <DIR>   
07/11/2012 10:01 AM <DIR>   
03/10/2008 11:00 AM   176,640 image1.jpg 
08/07/2007 02:27 PM   25,088 image2.jpg 
04/12/2007 04:52 PM   132,608 image3.jpg 
02/06/2007 06:11 PM   61,086 image4.jpg 

变为"C:\Work_Area\2008-03-10\"

这是我至今写...

@echo off 
REM ITERATE THROUGH EACH DIRECTORY 
FOR /F "DELIMS==" %%d in ('DIR "%ROOT%" /AD /B') DO ( 
    ECHO %%d 
    cd %%d 
    REM DETERMINE NEWEST FILE 
    FOR /F %%a in ('DIR /O:-D /B') DO @ECHO %%~ta 
    cd ..  
    REM echo Newest=%Newest%  
    REM move "%%f" "%Newest%"   
    pause 
) 

显然,在日期的斜线将需要在更改为另一个字符 为了这个成功。如果有人可以帮我解决这个问题, 将不胜感激!

+0

如果2个兄弟文件夹具有相同的最近修改文件日期,会发生什么情况?这两个文件夹不能同时重命名。另外,你的日期格式是mm/dd/yyyy? – dbenham 2012-07-11 22:02:39

+0

我忘了提及我收录的代码以MM/DD/YYYY HH:MM AM/PM格式回显日期。将每个文件夹重命名为MM-DD-YYYY HH:MM AM格式都可以。在这种特殊情况下,任何文件夹中都没有重复文件,因此重复文件夹名称的风险很低。 – Garbunkel 2012-07-12 14:22:06

+0

':'在文件或文件夹名称中无效,因此也必须更改(可能是'-'或'.')。重复文件名的存在或不存在对从上次修改时间戳严格派生的重复文件夹名称的风险没有影响。 – dbenham 2012-07-12 15:03:28

回答

3

该脚本会将其第一个参数中指定的根目录树的文件夹重命名为脚本(%1)。我已经编写了脚本来满足第二条评论中提出的要求。

写入的脚本实际上会回显将运行的重命名命令。准备重新命名时,只需从REN前面删除ECHO命令即可。

如果同级文件夹的最新修改文件具有相同的时间戳,至少一个重命名将失败。

此外,该脚本无法重命名不包含任何文件的文件夹。

@echo off 
setlocal disableDelayedExpansion 
if "%~1" neq "" pushd %1 
for /f "eol=: delims=" %%D in ('dir /s /b /ad ^| sort /r') do call :renameFolder "%%D" 
exit /b 

:renameFolder 
pushd %1 
for /f "eol=: delims=" %%F in ('dir /b /a-d /o-d') do (
    for /f "tokens=1-4* delims=/: " %%A in ("%%~tF") do (
    popd 
    echo ren %1 "%%C-%%A-%%B %%D.%%E" 
    exit /b 
) 
) 
+0

该脚本工作得很好。感谢您所有的帮助!! – Garbunkel 2012-07-13 13:32:55

+0

@Garbunkel - 如果您的问题得到满意答复,那么您应该通过点击答案左上角附近的复选标记来接受答案。这会通知其他用户该问题已得到解答,它将授予您2个声望点,以便花时间接受,并向接受答案的所有者授予15分。每个问题只能接受一个答案。一旦你达到了声望15,你也可以投票给你认为有用的答案,尽可能多的答案(包括其他人的问题)。 – dbenham 2012-07-13 14:07:10

相关问题