标题: [问题求助] 【已解决】VBS如何判断指定文件夹是否存在,不存在则创建该文件夹 [打印本页]
作者: tangqingfu 时间: 2013-5-28 12:27 标题: 【已解决】VBS如何判断指定文件夹是否存在,不存在则创建该文件夹
本帖最后由 pcl_test 于 2016-7-21 22:35 编辑
fso.createfolder("D:\dotPath")表示创建文件夹
请教添加判断的情况?即如果如果指定路径下没有该文件夹,则创建名为“dotPath”的文件夹,如果有,则无需创建的代码该如何编写?
作者: wankoilz 时间: 2013-5-28 14:40
- Set fso = WScript.CreateObject("Scripting.Filesystemobject")
- If Not fso.FolderExists("D:\dotPath") Then
- fso.CreateFolder("D:\dotPath")
- End If
复制代码
作者: tangqingfu 时间: 2013-5-28 17:16
本帖最后由 tangqingfu 于 2013-5-28 17:21 编辑
回复 2# wankoilz
小弟愚钝,没试成功!
能否请wankoilz兄帮修改一下代码?为创建文件夹添加判断 :如果如果指定路径下没有该文件夹,则创建名为“dotPath”的文件夹,如果有,则无需创建- '//VBS复制U盘Doc文件 @CODE BY Broly
- '//声明:此VBS由Broly制作,代码仅作学习研究之用。使用前请三思而行,产生不良后果均与本人无关!
- Const DocPath="D:\DotPath\" '此处为你放DOT文件的文件夹,运行前请创建好
- Dim fso,Disks
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set Disks = fso.Drives
- For Each Disk In Disks
- If Disk.IsReady And Disk.DriveType = 1 Then
- Udisk=Disk.DriveLetter & ":\"
- U=True
- End if
- Next
- If U=True Then
- CopyDocs(Udisk)
- Else
- Msgbox "没有发现U盘或者U盘没有插好!",vbOkOnly,"提示"
- WScript.Quit
- End If
- WScript.Quit
-
- Sub CopyDocs(path)
- Dim folder,subfolders,Files
- Set folder = fso.getfolder(path)
- Set subfolders = folder.subfolders
- Set Files = folder.Files
- For Each File In Files
- If fso.GetExtensionName(File.path)="dot" Then
- fso.CopyFile File.Path,DotPath,True '设置为True,表示如果文件存在则覆盖
- End if
- Next
- For Each subfolder In subfolders
- CopyDocs(subfolder.path) '递归查找子目录
- Next
- End Sub
复制代码
作者: tangqingfu 时间: 2013-5-29 12:21
期待各位帮解决3楼的问题……
作者: wankoilz 时间: 2013-5-30 01:21
本帖最后由 wankoilz 于 2013-5-30 01:24 编辑
Broly兄的代码中有几个地方被忽略了:
1、前面是 Const DocPath="D:\DotPath\" 。fso.CopyFile File.Path,DotPath,True 中的DotPath写错了。
2、fso.GetExtensionName(File.path)="dot"这里应该是doc吧
3、代码中没有创建文件夹的句子。
我想楼主应该可以自行修改吧!
作者: tangqingfu 时间: 2013-5-30 01:53
回复 5# wankoilz
谢谢兄台的指点!
能否请兄台为创建文件夹添加判断 :如果如果指定路径下没有该文件夹,则创建名为“dotPath”的文件夹,如果有,则无需创建
作者: czjt1234 时间: 2013-5-30 07:07
我还是回个贴吧
2楼的代码我测试过了,如果没有D:\dotPath
回自动创建该文件夹
如果已有该文件夹,则无需创建
我测试成功了,不知道楼主为什么这么纠结
作者: tangqingfu 时间: 2013-5-30 07:42
回复 7# czjt1234
您再运行一次试试,会提示“错误: 文件已存在”。说明没在为创建文件夹加入判断,期待您的解决……
作者: wankoilz 时间: 2013-5-30 10:52
本帖最后由 wankoilz 于 2013-5-30 10:55 编辑
修改你给出的代码:
前提是电脑上有D盘
拷贝doc文件(后缀名是doc还是dot?我有点糊涂了...)- Const DocPath="D:\DocPath\" '此处为你放DOT文件的文件夹,运行前请创建好
- Dim fso,Disks
- Set fso = CreateObject("Scripting.FileSystemObject")
- If Not fso.FolderExists(DocPath) Then
- fso.CreateFolder(DocPath)
- End If
- Set Disks = fso.Drives
- For Each Disk In Disks
- If Disk.IsReady And Disk.DriveType = 1 Then
- Udisk=Disk.DriveLetter & ":\"
- U=True
- End if
- Next
- If U=True Then
- CopyDocs(Udisk)
- Else
- Msgbox "没有发现U盘或者U盘没有插好!",vbOkOnly,"提示"
- WScript.Quit
- End If
- WScript.Quit
-
- Sub CopyDocs(path)
- Dim folder,subfolders,Files
- Set folder = fso.getfolder(path)
- Set subfolders = folder.subfolders
- Set Files = folder.Files
- For Each File In Files
- If fso.GetExtensionName(File.path)="doc" Then
- fso.CopyFile File.Path,DocPath,True '设置为True,表示如果文件存在则覆盖
- End if
- Next
- For Each subfolder In subfolders
- CopyDocs(subfolder.path) '递归查找子目录
- Next
- End Sub
复制代码
PS:我觉得最好征得他人同意后,直接拷更好
作者: broly 时间: 2013-5-30 11:06
本帖最后由 broly 于 2013-5-30 11:08 编辑
回复 9# wankoilz
dot是doc的模板文件。那个代码跟我之前写的不一样,被楼主改过了。楼主应该复制的不是doc,是dot
作者: wankoilz 时间: 2013-5-30 11:21
我就说咋会有那么明显的错误……
作者: tangqingfu 时间: 2013-5-30 12:38
回复 9# wankoilz
测试通过!谢谢楼上两位!的确是要复制.dot
作者: tangqingfu 时间: 2013-7-9 10:55
回复 13# kqbt
是的,很高兴在这里遇见卡卡兄!bat知识知之甚少,所有度一个金,呵呵!
作者: zhangop9 时间: 2021-8-28 09:24
不存在则创建该文件夹
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |