[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 求助vbs将文件名前N个字符相同的文件移动到相应新建的文件夹内,谢过!

在当前目录,按照文件名称的前N个字符新建目录,并将文件名前N个字符相同的文件移动到相应新建的文件夹内,测试过多次,如果出现前N个字符相同的文件超过100个,则只移动100个文件,剩余的则不做处理,且cmd窗口也一直显示,请教大神,这该怎么处理?谢谢!
  1. Dim p
  2. Dim sp
  3. Dim N
  4. Set dp = CreateObject("Scripting.Dictionary")
  5. Set FSO = CreateObject("Scripting.FileSystemObject")
  6. Set Directory = FSO.GetFolder(".")
  7. p=0
  8. N=inputbox("输入需要截取文件名的位数(左起)","提示!","",8000,4000)
  9. if N="" then
  10.   WScript.Quit
  11. end if
  12. if (IsNumeric(N)=false) then
  13.   msgbox "输入大于0的正整数"
  14.   WScript.Quit
  15. end if
  16. if N<=0 then
  17.   msgbox "输入大于0的正整数"
  18.   WScript.Quit
  19. end if
  20. For Each FileName In Directory.Files
  21.     if (right(FileName.Name,4)<>".vbs" ) and (right(FileName.Name,4)<>".bat") and (right(FileName.Name,4)<>".xls" ) and (right(FileName.Name,5)<>".xlsm") then
  22.         sp=Left(FileName.Name,N)
  23. 'wscript.echo sp
  24.         if not dp.Exists(sp) then
  25.             dp.Add p,sp
  26.             p=p+1
  27. 'msgbox p
  28.         end if
  29.     end if
  30. Next
  31. 'msgbox p & sp
  32. Set FileName = Nothing
  33. Set Directory = Nothing
  34. Set FSO = Nothing
  35. Set WshShell = CreateObject("WScript.Shell")
  36. for i=0 to p-1
  37.     Set oExec = WshShell.Exec("cmd /c md "+dp(i)+" && move "+dp(i)+"*.* "+dp(i)+"\")
  38.     Do While oExec.Status = 0
  39.         WScript.Sleep 100
  40.     Loop
  41. next
  42. Set WshShell = Nothing
  43. Set dp = Nothing
复制代码

返回列表