中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-14 18:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 一个按照文件扩展名整理文件的VBS
楼 主 一个按照文件扩展名整理文件的VBS 发表于 2006-12-15 03:05 ·  中国 辽宁 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
UID 73417
性别 男
状态 离线
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 ]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
redtek +3 2006-12-15 21:51
zhclvip +2 2007-02-04 08:13
2 发表于 2006-12-15 04:16 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
UID 42173
性别 男
状态 离线
不错~

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
3 发表于 2006-12-15 04:40 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

  学习了~
4 发表于 2006-12-15 05:06 ·  中国 河北 廊坊 三河市 移动
初级用户
积分 41
发帖 19
注册 2006-12-15 00:10
UID 73540
性别 男
状态 离线
不知bat做出来怎样。大家试试:

for %%i in (*) do (
md %%~xi文件>nul 2>nul
move *%%~xi %%~xi文件)
5 发表于 2006-12-15 05:39 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  以下代码能实现和顶楼的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 ]
本帖最近评分记录 (共 3 条) 点击查看详情
评分人分数时间
ccwan +5 2006-12-15 05:47
lxmxn +3 2006-12-15 07:18
redtek +3 2006-12-15 21:51
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
6 发表于 2006-12-15 05:47 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
UID 63486
来自 河北廊坊
状态 离线
版主这个好!
它会保留自身,不进入.bat文件夹。
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
7 发表于 2006-12-15 06:12 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
UID 63324
性别 男
状态 离线
欣赏~~
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
8 发表于 2006-12-15 07:19 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

  顶一个先。
9 经过改进------以下是可以保留自身的VBS。 发表于 2006-12-15 21:18 ·  中国 辽宁 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
UID 73417
性别 男
状态 离线
****以下是可以保留自身的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,"操作成功"
本帖最近评分记录 (共 3 条) 点击查看详情
评分人分数时间
redtek +3 2006-12-15 21:52
ccwan +5 2006-12-16 06:27
lxmxn +3 2006-12-16 06:31
10 发表于 2006-12-15 22:07 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
UID 63486
来自 河北廊坊
状态 离线
好啊。现在受限,回头给你加分。
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
11 发表于 2006-12-16 06:29 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
UID 63486
来自 河北廊坊
状态 离线
我说到做到^_^ 灌水~~
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
12 发表于 2006-12-16 08:45 ·  中国 广东 肇庆 电信
中级用户
★★
积分 384
发帖 189
注册 2005-10-19 13:12
UID 43709
性别 男
状态 离线
这个不错,不知兄们能否做个可以根据MP3位速来归类的VBS呢...
13 发表于 2006-12-16 09:40 ·  中国 甘肃 平凉 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
做记号
14 我也来凑个热闹 发表于 2006-12-17 00:10 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
UID 73417
性别 男
状态 离线
‘按类型整理文件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 ]
15 发表于 2006-12-17 00:22 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
UID 63486
来自 河北廊坊
状态 离线
呵呵,两位原来在比擂啊。
jmz573515兄,提个小意见,窗口停顿时间太短,来不及操作。
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
论坛跳转: