Board logo

标题: 一个按照文件扩展名整理文件的VBS [打印本页]

作者: jmz573515     时间: 2006-12-15 03:05    标题: 一个按照文件扩展名整理文件的VBS

on error resume next
Set WshShell = WScript.CreateObject("WScript.Shell")
set fso=createobject("scripting.filesystemobject")
set folder=fso.getfolder(WshShell.CurrentDirectory)
set files=folder.files ' 当前目录的所有文件集合
for each file in files
if fso.folderexists(fso.GetExtensionName(file) & "文件") then
fso.movefile file, fso.GetExtensionName(file) & "文件\"
else
fso.createfolder (fso.GetExtensionName(file) & "文件")
fso.movefile file, fso.GetExtensionName(file) & "文件\"
end if
next
msgbox "已经将所所有文件按类型分类。",48+4096,"操作成功"

[ Last edited by jmz573515 on 2006-12-15 at 08:17 AM ]
作者: electronixtar     时间: 2006-12-15 04:16
不错~
作者: lxmxn     时间: 2006-12-15 04:40

  学习了~

作者: Primalchaos     时间: 2006-12-15 05:06
不知bat做出来怎样。大家试试:
for %%i in (*) do (
md %%~xi文件>nul 2>nul
move *%%~xi %%~xi文件)

作者: namejm     时间: 2006-12-15 05:39
  以下代码能实现和顶楼的vbs代码同样的功能。有所区别的是,不会移动自身:
@echo off
title 文件归类整理器

:: 目的:
::
::   对当前目录下的不同文件进行归类操作(不处理子目录)
::
:: 2006-12-16 修改了一处错误

for /f "delims=" %%i in ('dir /a-d /b /oe') do (
    set "nx_name=%%~nxi"
    call :build_dir %%~xi
    set file_type=%%~xi

)
goto :eof

rem ======= 按文件类型创建文件夹 =======
:build_dir
set types=%1
set types=%types:~1%

:: 判断要处理的文件是不是批处理自身
if "%nx_name%"=="%~nx0" (set file_self=yes&set file_type=) else set file_self=

:: 判断文件类型是否发生了变化
if "%file_type%"=="%1" (set same_type=yes) else set same_type=

if not defined file_self if not defined same_type md %types%文件 2>nul
if not defined file_self move /-y "%nx_name%" %types%文件
goto :eof
  能处理子目录的代码请点 这里 查看。

[ Last edited by namejm on 2006-12-16 at 10:57 AM ]
作者: ccwan     时间: 2006-12-15 05:47
版主这个好!
它会保留自身,不进入.bat文件夹。
作者: redtek     时间: 2006-12-15 06:12
欣赏~~
作者: lxmxn     时间: 2006-12-15 07:19

  顶一个先。

作者: jmz573515     时间: 2006-12-15 21:18    标题: 经过改进------以下是可以保留自身的VBS。

****以下是可以保留自身的VBS。
on error resume next
Set WshShell = WScript.CreateObject("WScript.Shell")
set fso=createobject("scripting.filesystemobject")
set folder=fso.getfolder(WshShell.CurrentDirectory)
set files=folder.files ' 当前目录的所有文件集合
for each file in files
if file.name<>wscript.scriptname then
if fso.folderexists(fso.GetExtensionName(file) & "文件") then
fso.movefile file, fso.GetExtensionName(file) & "文件\"
else
fso.createfolder (fso.GetExtensionName(file) & "文件")
fso.movefile file, fso.GetExtensionName(file) & "文件\"
end if
else
end if
next
msgbox "已经将所所有文件按类型分类。",48+4096,"操作成功"
作者: ccwan     时间: 2006-12-15 22:07
好啊。现在受限,回头给你加分。
作者: ccwan     时间: 2006-12-16 06:29
我说到做到^_^ 灌水~~
作者: voiL     时间: 2006-12-16 08:45
这个不错,不知兄们能否做个可以根据MP3位速来归类的VBS呢...
作者: vkill     时间: 2006-12-16 09:40
做记号
作者: jmz573515     时间: 2006-12-17 00:10    标题: 我也来凑个热闹

‘按类型整理文件VBS版(包含子目录),整理后原文件还在,详细请看注释。

Const WINDOW_HANDLE = 0
Const OPTIONS = &H10&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder _
    (WINDOW_HANDLE, "请选择你要整理的文件夹:", OPTIONS, ".")
If objFolder Is Nothing Then
    Wscript.Quit
End If
Set objFolderItem = objFolder.Self
objPath = objFolderItem.Path
search(objpath)
sub search(folder)
set fso=createobject("scripting.filesystemobject")
on error resume next
set folder=fso.getfolder(folder)
set files=folder.files
for each file in files
if file.name<>wscript.scriptname then
if fso.folderexists(fso.GetExtensionName(file) & "文件") then
fso.copyfile file, fso.GetExtensionName(file) & "文件\" '为了安全起见此处我用的复制(copyfile)没有剪切(movefile),如果想移动文件可以自行更改。
else
fso.createfolder (fso.GetExtensionName(file) & "文件")
fso.copyfile file, fso.GetExtensionName(file) & "文件\" '为了安全起见此处我用的复制(copyfile)没有剪切(movefile),如果想移动文件可以自行更改。
end if
else
end if
next
set subfolders=folder.subfolders
for each subfolder in subfolders
search(subfolder)
next
end sub
msgbox "已经将" & "【" & objpath & "】下所有文件按类型分类。",48+4096,"操作成功"

[ Last edited by jmz573515 on 2006-12-16 at 11:13 AM ]
作者: ccwan     时间: 2006-12-17 00:22
呵呵,两位原来在比擂啊。
jmz573515兄,提个小意见,窗口停顿时间太短,来不及操作。
作者: jmz573515     时间: 2006-12-17 00:25
晕,在我的电脑上没有出现这种情况啊,只有选择了文件夹后才继续下面的操作啊?
作者: ccwan     时间: 2006-12-17 00:30
那就怪了,我又试了几回,都是那样。莫非我不会操作?
请jmz573515兄详细讲讲。
作者: jmz573515     时间: 2006-12-17 00:51
ccwan我也又试几好几次没有问题啊,你说的是不是在整理文件的时候没有提示...
作者: ccwan     时间: 2006-12-17 01:09
郁闷ing
我想整理H:\1\3\1\edit\edit这个文件夹,在H:\1\3\1\edit下放置vbs文件,运行后出现窗口浏览文件夹,几秒内不操作,自动退出;手忙脚乱地选择“我的电脑”-”h:“-“1”-“3”,到这里,又退出了。
不知是否我的机子有问题?
作者: jmz573515     时间: 2006-12-17 01:29
我模访你的任务试了一下,没有问题啊
是不是杀毒软件在搞怪?
作者: qiongshuai     时间: 2007-3-2 05:33
xiexie,有用到的时候
作者: slore     时间: 2007-3-2 07:56
能不判断自身就不要浪费去判断……放到目录的上一层执行嘛……处理路径改下不就完了?
作者: seegod     时间: 2007-7-9 13:25    标题: 呵呵

高人真多啊