Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


js
Код: Выделить весь код
var AllDir = "D:\\CMD_Forum\\Муз";    // ---------  Полное имя рабочего каталога (без слэжа \ на конце) 

var Maska = "^.*\\..*$";

var FSO = WScript.CreateObject("Scripting.FileSystemObject");

var RegMaska = new RegExp(Maska);
RegMaska.IgnoreCase = true;

AllFiles(AllDir);

// -------------------------------------------
function AllFiles(WDir) {
	var Folds = FSO.GetFolder(WDir);
	var Finfo = FSO.OpenTextFile(WDir + "\\!!! " + Folds.Name + ".Info", 	2, true);
	var SubF =  new Enumerator(Folds.SubFolders);
	var Files = new Enumerator(Folds.Files);
	var jf;
	Finfo.WriteLine("+++ " + Folds.Name + " +++  " + WDir);

	while (!Files.atEnd()) {
		jf = Files.item().Name;	
		if (RegMaska.test(jf)) {
			Finfo.WriteLine(jf);
		}
		Files.moveNext();
	}
	Finfo.Close();

	while (!SubF.atEnd()) {
		AllFiles(WDir + "\\" + SubF.item().Name);
		SubF.moveNext();
	}
}
vbs
Код: Выделить весь код
Public FSO, RegMaska

AllDir = "D:\CMD_Forum\Муз"    ' ---------  Полное имя рабочего каталога (без слэжа \ на конце)
Maska= "^.*\..*"

Set FSO = CreateObject("Scripting.FileSystemObject")

Set RegMaska = New RegExp
RegMaska.Pattern = Maska
RegMaska.IgnoreCase = True

Call AllFiles(AllDir)

MsgBox "Скрипт завершился"

' ---------------------------------------------------------------------------
Sub AllFiles(WDir)

    Set Folds = FSO.GetFolder(WDir)
    Set SubF = Folds.SubFolders
    Set Files = Folds.Files

    Set Finfo = FSO.OpenTextFile(WDir + "\!!! " + Folds.Name + ".Info", 	2, True)
    Finfo.WriteLine "+++ " + Folds.Name + " +++  " + WDir

    For Each jF In Files
	If RegMaska.Test(jf) Then 
        	Finfo.WriteLine FSO.GetFileName(jF)
        End If
    Next

    Finfo.Close

    For Each Folder In SubF
        Call AllFiles(WDir + "\" + Folder.Name)
    Next

End Sub
bat
Код: Выделить весь код
@Echo Off
chcp 1251 >nul

Set "AllDir=D:\CMD_Forum\Муз"

Set "Maska=*.*"

Call :SpisFiles "%AllDir%"
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%AllDir%" /B /S /A:D`) DO Call :SpisFiles "%%d"
GoTo :Eof

:SpisFiles
	>"%~1\!!! %~nx1.Info" (
		Echo +++ %~nx1 +++  %~1
		FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%~1\%Maska%" /B /A:-D`) DO Echo %%f
	)
GoTo :Eof
cmd/bat ваяется многократно быстрее

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 02-05-2018 в 06:48.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:22, 01-05-2018 | #5