1. ホーム
  2. スクリプト・コラム
  3. 腹筋

VBSで指定されたディレクトリにあるファイルの一覧を取得する方法

2022-01-16 08:44:45

VBSでディレクトリ内のファイル一覧を取得する方法

/*
 * Created by SharpDevelop.
 * User: Administrator
 * Date: 2010-11-24
 * Time: 10:44
 *Time: 10:44. 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
Use System;
Generic;
Drawing;
Windows;

namespace HtmlDom
{
	/// <summary>
	/// Description of MainForm.
	/// </summary>
	public partial class MainForm : Form
	{
		public MainForm()
		{
			/// The InitializeComponent() call is required for Windows Forms designer support.
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}
		AboutForm aFrm=new AboutForm();
		void MainFormLoad(object sender, EventArgs e)
		{
			aFrm.Show();
			UrlText.Width=toolStrip1.Width -(toolStripButton1.Width+toolStripButton2.Width+toolStripLabel1.Width+50);
		}
		
		void MainFormResize(object sender, EventArgs e)
		{
			UrlText.Width=toolStrip1.Width -(toolStripButton1.Width+toolStripButton2.Width+toolStripLabel1.Width+50);
		}
		
	
		
		void ToolStripButton1Click(object sender, EventArgs e)
		{
			webBrowser1.Navigate(UrlText.Text);
			while(webBrowser1.ReadyState!=WebBrowserReadyState.Complete){
				Application.DoEvents();
			}
			treeView1.Nodes.Clear();
			TreeNode node=new TreeNode();
			toolStripProgressBar1.Value=0;
			Value=0; toolStripProgressBar1.Minimum=0;
			toolStripProgressBar1.Maximum=webBrowser1.Document.All.Count;
			GetDom(node,webBrowser1.Document.GetElementsByTagName("html"));
			treeView1.Nodes.Add(node.FirstNode);
		}
		void GetDom(TreeNode node,HtmlElementCollection html){
			foreach(HtmlElement he in html){
				TreeNode tmp=node.Nodes.Add("<"+he.OuterHtml.Split(new char[]{'<'})[1]);
				if(he.CanHaveChildren){
					GetDom(tmp,he.Children);
				}
				toolStripProgressBar1.Value+=1;
			}
		}
		
		void ToolStripButton2Click(object sender, EventArgs e)
		{
			aFrm.Show();
		}
	}
}



'ディレクトリ一覧は上記と同様ですが、若干の修正を加えています。

vbsはディレクトリ内のファイルやフォルダの集合を取得する

Dim sFolder, sExt, message
sFolder = "F:\Programming\Applications\VBScript"
 
Dim fs, oFolder, oFiles, oSubFolders
set fs = CreateObject("Scripting.FileSystemObject")
set oFolder = fs.GetFolder(sFolder) 'Get the folder
set oSubFolders = oFolder.SubFolders 'Get the set of subdirectories
 
for each folder in oSubFolders
  message = "folder:" & folder
  MsgBox message
Next
 
set oFiles = oFolder.Files 'Get a collection of files
for each file in oFiles
  sExt = fs.GetExtensionName(file) 'Get the file extensions
  sExt = LCase(sExt) 'convert to lowercase
  message = "File name: " & file.Name & ", extension: " & sExt 'Get the file name (with extension, without path) and extension
  MsgBox message
Next

上記のfolder.Nameは、フォルダの名前(パスなし)を与えます。
例)folder = F:\Programming⇄Applications⇄VBScript⇄dd
folder.Name で "dd" を取得することができます。

サブディレクトリのファイル数を一括でカウントする

@echo off&setlocal enabledelayedexpansion
cd.>dirfiles.txt
for /d %%a in (*. *) do (
set n=0
for /f %%B in ('dir /a-d /b /s "%%a"') do set /a n+=1
echo %%a !n! >>dirfiles.txt
)

まとめられるスペック