Dir 函数示例 本示例使用 Dir 函数来检查某些文件或目录是否存在。在 Macintosh 计算机上,默认驱动器名称是 “HD” ,并且路径部分由冒号取代反斜线隔开。而且 Microsoft Windows 的通配符在 Mac 中可以作为有效字符出现在文件名中。也可以使用 MacID 函数来指定文件组。Dim MyFile, MyPath, MyName' 返回“WIN.INI” (如果该文件存在)。 MyFile = Dir("C:\WINDOWS\WIN.ini") ' 返回带指定扩展名的文件名。如果超过一个 *.ini 文件存在, ' 函数将返回按条件第一个找到的文件名。 MyFile = Dir("C:\WINDOWS\*.ini")' 若第二次调用 Dir 函数,但不带任何参数,则函数将返回同一目录下的下一个 *.ini 文件。 MyFile = Dir' 返回找到的第一个隐式 *.TXT 文件。 MyFile = Dir("*.TXT", vbHidden)' 显示 C:\ 目录下的名称。 MyPath = "c:\" ' 指定路径。 MyName = Dir(MyPath, vbDirectory) ' 找寻第一项。 Do While MyName <> "" ' 开始循环。 ' 跳过当前的目录及上层目录。 If MyName <> "." And MyName <> ".." Then ' 使用位比较来确定 MyName 代表一目录。 If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then Debug.Print MyName ' 如果它是一个目录,将其名称显示出来。 End If End If MyName = Dir ' 查找下一个目录。 LoopFileCopy 语句示例 本示例使用 FileCopy 语句来复制文件。示例中假设 SRCFILE 为含有数据的文件。Dim SourceFile, DestinationFile SourceFile = "SRCFILE" ' 指定源文件名。 DestinationFile = "DESTFILE" ' 指定目的文件名。 FileCopy SourceFile, DestinationFile ' 将源文件的内容复制到目的文件中。
如果是的话用下面代码,默认只处理当前目录下的文件夹和文件: Dim fso,objFolders,objFolder,rsshell set fso = CreateObject("Scripting.FileSystemObject") set rsshell=createobject("wscript.shell") Set objFolders = fso.GetFolder(".") For Each objFolder In objFolders.SubFolders rsshell.run "cmd /c move " & left(objFolder.name,8) & ".* " & objFolder.name,0 Next处理前 处理后
直接bat脚本: @echo off setlocal EnableDelayedExpansion for /d %%i in (2016*) do ( :: echo %%~ni set p=%%~ni set m=!p:~0,8! echo !m! for %%a in ( !m!.docx ) do ( echo %%a move %%a %%i ) for %%b in ( !m!.xls ) do ( echo %%b move %%b %%i ) ) pause
本示例使用 Dir 函数来检查某些文件或目录是否存在。在 Macintosh 计算机上,默认驱动器名称是 “HD” ,并且路径部分由冒号取代反斜线隔开。而且 Microsoft Windows 的通配符在 Mac 中可以作为有效字符出现在文件名中。也可以使用 MacID 函数来指定文件组。Dim MyFile, MyPath, MyName' 返回“WIN.INI” (如果该文件存在)。
MyFile = Dir("C:\WINDOWS\WIN.ini") ' 返回带指定扩展名的文件名。如果超过一个 *.ini 文件存在,
' 函数将返回按条件第一个找到的文件名。
MyFile = Dir("C:\WINDOWS\*.ini")' 若第二次调用 Dir 函数,但不带任何参数,则函数将返回同一目录下的下一个 *.ini 文件。
MyFile = Dir' 返回找到的第一个隐式 *.TXT 文件。
MyFile = Dir("*.TXT", vbHidden)' 显示 C:\ 目录下的名称。
MyPath = "c:\" ' 指定路径。
MyName = Dir(MyPath, vbDirectory) ' 找寻第一项。
Do While MyName <> "" ' 开始循环。
' 跳过当前的目录及上层目录。
If MyName <> "." And MyName <> ".." Then
' 使用位比较来确定 MyName 代表一目录。
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
Debug.Print MyName ' 如果它是一个目录,将其名称显示出来。
End If
End If
MyName = Dir ' 查找下一个目录。
LoopFileCopy 语句示例
本示例使用 FileCopy 语句来复制文件。示例中假设 SRCFILE 为含有数据的文件。Dim SourceFile, DestinationFile
SourceFile = "SRCFILE" ' 指定源文件名。
DestinationFile = "DESTFILE" ' 指定目的文件名。
FileCopy SourceFile, DestinationFile ' 将源文件的内容复制到目的文件中。
Dim fso,objFolders,objFolder,rsshell
set fso = CreateObject("Scripting.FileSystemObject")
set rsshell=createobject("wscript.shell")
Set objFolders = fso.GetFolder(".")
For Each objFolder In objFolders.SubFolders
rsshell.run "cmd /c move " & left(objFolder.name,8) & ".* " & objFolder.name,0
Next处理前
处理后
@echo off
setlocal EnableDelayedExpansion
for /d %%i in (2016*) do (
:: echo %%~ni
set p=%%~ni
set m=!p:~0,8!
echo !m!
for %%a in ( !m!.docx ) do ( echo %%a
move %%a %%i
)
for %%b in ( !m!.xls ) do ( echo %%b
move %%b %%i
)
)
pause