JavaScript - No funciona la recursividad en Jscript

 
Vista:

No funciona la recursividad en Jscript

Publicado por macamba (8 intervenciones) el 09/04/2009 16:08:19
Hola a todos,

No es capaz de recorrer el un directorio con mas de dos carpetas:

1
2
3
4
5
6
7
8
C:
│   callpc.db
├───a
│       aa.txt
└───b
        bb.txt

Muestra el path de callpc.db y de aa.txt pero no el de bb.txt. Que es lo que estoy haciendo mal?
ListarArchivos("Directorio que vas a recorer");

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function ListarArchivos(nomCarpeta)
 {
 fso = WScript.CreateObject("Scripting.FileSystemObject");
 Carpeta = fso.GetFolder(nomCarpeta);
 
 Ficheros = new Enumerator(Carpeta.Files);
 // Obtiene la coleccion de archivos de la carpeta y la recorre
 for (; !Ficheros.atEnd(); Ficheros.moveNext())
  WScript.Echo(Ficheros.item());
 
 Carpetas = new Enumerator(Carpeta.SubFolders);
 // Obtiene la coleccion de carpetas de la carpeta y la recorre
 for (; !Carpetas.atEnd(); Carpetas.moveNext())
  ListarArchivos(Carpetas.item());
 
 Carpeta = null;
 fso = null;
 }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE: Recorrer subdirectorios sin Recursividad

Publicado por macamba (8 intervenciones) el 10/04/2009 16:31:03
Tras volverme loco con la recursividad, he tenido que optar por recorrer todos los subdirectorios de un directorio dado sin el uso de la maldita recursividad. Por cierto estoy empezando un poco con jscript y no se si existen pilas, si fuese asi en el siguiente ejemplo seria mucho mejor usar una pila que el array "ListFolders".

=====================================================

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var MY_COMPUTER = "H11" ;
var WINDOW_HANDLE = 0;
var OPTIONS = 0;
var MSG_INICIO = "Seleccione una carpeta: ";
objShell = WScript.CreateObject("Shell.Application");
objFolder = objShell.BrowseForFolder(WINDOW_HANDLE, MSG_INICIO, OPTIONS);
objFolderItem = objFolder.Self;
objPath = objFolderItem.Path;
 
GetFiles(objFolderItem.Path);
 
function GetFiles(namFolder)
 {
 fso = WScript.CreateObject("Scripting.FileSystemObject");
 Folder = fso.GetFolder(namFolder);
 
 var ListFolders=new Array();
 i=0;
 j=0;
 ListFolders[j] = Folder;
 j++; //Cuando entran datos al array "ListFolders", se incrementa "j"
 
 while(ListFolders.length != i)
  {
  currentFolder = fso.GetFolder(ListFolders[i])
  i++; //Cuando se leen datos del array "ListFolders", se incrementa "i"
  subFolders =  new Enumerator(currentFolder.SubFolders);
  Files = new Enumerator(currentFolder.Files);
 
  for (; !Files.atEnd(); Files.moveNext())
   WScript.Echo(Files.item());
 
  for (; !subFolders.atEnd(); subFolders.moveNext())
   {
   ListFolders[j] = subFolders.item();
   j++; //Cuando entran datos al array "ListFolders", se incrementa "j"
   }
  }
 }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No funciona la recursividad en Jscript

Publicado por zeneke79 (1 intervención) el 14/07/2015 12:33:07
El problema de este código es que dentro de la función recursiva hay que declartar TODAS las variables con var si no la recursividad no funciona adecuadamente.

var fso...
var Ficheros...
var Carpeta...
var Carpetas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar