2012-06-19 30 views
-1

我需要得到一个文件夹中的所有文件被附加今天的日期和时间戳在以下格式:filename_mmddyyyy.fileextension。有人可以请帮助这一点,或者这可以使用蝙蝠脚本来完成。VBscript文件名重命名与日期戳

+2

[你有什么尝试](http://whathaveyoutried.com/)? – Filburt

回答

0

请发布您的代码,尽可能少或不足,它确实有帮助,FormatDateTime需要您的当地居民,我在法兰德斯,欧洲所以我的系统添加_19062012.ext但在您的系统上应该被_06192012.ext

set oFso = createobject("scripting.filesystemobject") 
sDirectorypath = "c:\testing" 
rename_files(sDirectorypath) 

sub rename_files(folder) 
    set oFolder = oFso.getfolder(folder) 
    for each oFile in oFolder.files 
    new_name = oFile & "_" & replace(FormatDateTime(now,2),"/","") & "." & oFso.GetExtensionName(oFile) 
    wscript.echo "renaming " & oFile & " => " & new_name 
    errResult = oFso.MoveFile(oFile, new_name) 
    next 
    for each oSubFolder in oFolder.subfolders 
    rename_files(oSubFolder) 
    next 
end sub 
+0

尽管Sub调用中的()函数使用字符串而不是文件夹对象作为参数,并且没有使用new_name测试文件的存在,但它们是样式和味道的问题,使用.MoveFile作为函数(errResult)isn没有有效的VBScript。 –

+0

当它运行没有问题时,它在我的书Ekkehard中是有效的,如果可能的话我会测试我所有的答案,并且正如我以前多次说过的,提出自己的解决方案,而不是选择那些花时间和兴趣回答 – peter

+0

检查是否存在的问题,如果这个脚本没有与一个调度程序运行,它应该失败,如果一个文件已经存在与该名称 – peter

0

当然它可以在一个批处理文件来完成:-)

@echo off 
setlocal 
set "timestamp=" 
for /f "skip=1" %%A in ('wmic os get localdatetime') do (
    if not defined timestamp set "timestamp=%%A" 
) 
for /f "eol=: delims=" %%F in ('dir /b /a-d myFolder\*') do (
    if "%%~fF" neq "%~f0" ren "%%F" "%%~nF_%timestamp:~4,4%%timestamp:~0,4%%%~xF 
) 

必须小心,以确保该批处理文件不会重命名本身 - 它会失败,如果它在运行时被重命名。