[APORTE] [BATCH] Folders2List

Iniciado por Eleкtro, 12 Abril 2014, 00:31 AM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

Hola

Este Script es el hermano de este otro Script, genera un archivo de texto que contiene la lista de estructura de carpetas del directorio de trabajo y de sus subdirectorios, el directorio de trabajo se puede modificar en las variables del Script, y la lista de capetas se registra usando la ruta relativa de los archivos de dicho directorio de trabajo.

El Script tiene 2 métodos de listar las carpetas, que son: 1. Listado normal, y 2. Listado incluyendo carpetas ocultas.
El Script tiene la funcionalidad de medir el tiempo transcurrido de la operación.

Todo lo que he mencionado se puede configurar en las variables que están documentadas con comentarios de ayuda en el código.

· Una imagen de muestra:


· El código:

Folders2List.cmd
Código (dos) [Seleccionar]
@Echo OFF



REM =================
REM Console Settings:
REM =================

Title Folders2List - By Elektro
Mode Con Cols=150 Lines=50
CHCP 1252 1>NUL & REM Windows-1252, Spanish-Latin.



REM =====
REM Info:
REM =====

Echo+
Echo  ------------------------------------------------------------------------------------------------------------------------------------
Echo  This script writes a textfile containing the relative paths of the folder structure at the working directory and it's subdirectories
Echo  ------------------------------------------------------------------------------------------------------------------------------------
Echo+



REM ====================
REM User defined values:
REM ====================

REM This value indicates the directory where to list it's folder structure.
Set "WorkingDir=%CD%"

REM This value indicates the resulting folder list.
Set "OutputFile=%CD%\Folders.txt"

REM This value indicates how the hidden folders are threated when listing the folder structure.
REM  True = List folders and also folders with the 'hidden' attribute.
REM False = List only normal folders without the 'hidden' attribute.
Set "IncludeHiddenFolders=True"



REM =====
REM Main:
REM =====

:: Display starting info.
Echo [i] Working Directory...: %WorkingDir%
Echo [i] Output file.........: %OutputFile%
Echo [i] Include Hidden Files: %IncludeHiddenFolders%
Echo+

:: Call Methods.
Call :CheckErrors
Call :StartTimer
Call :ListFolders "%IncludeHiddenFolders%"
Call :StopTimer

:: Finish.
Echo [i] Done!           | MORE
Echo [i] Listed Folders: %FolderCount% folders.
Echo [i] Elapsed Time..: %ElapsedTime%
Echo+
Pause&Exit



REM ========
REM Methods:
REM ========

:StartTimer
Set "StartingDate=%Date%"
Set "StarttingTime=%Time:~0,-3%"
Goto :EOF


:StopTimer
(
Echo Minutes = DateDiff^("n", "%StartingDate% %StarttingTime%", Now^)
Echo WScript.Echo Minutes ^& " Minutes"
)>"%TEMP%\%~n0 MinuteDiff.vbs"

For /F "Tokens=*" %%# In (
'Cscript.exe /Nologo "%TEMP%\%~n0 MinuteDiff.vbs"'
) Do (
Set "ElapsedTime=%%#"
)

Goto:EOF


:ListFolders
Echo [+] Collecting folders, this operation could take some minutes long, please wait...
If /I "%~1" EQU "True"  (Call :ListHiddenFolders)
If /I "%~1" EQU "False" (Call :ListNormalFolders)
Goto:EOF


:ListNormalFolders
(FOR /D /R "%WorkingDir%" %%# in ("*") DO (
Set "Folder=%%~f#"
Call Echo %%Folder:%WorkingDir%=.%%
Set /A "FolderCount+=1"
))>"%OutputFile%"
Goto:EOF


:ListHiddenFolders
(FOR /F "Tokens=* Delims=" %%# in ('Dir /B /S /AD "%WorkingDir%\*"') DO (
Set "Folder=%%~f#"
Call Echo %%Folder:%WorkingDir%=.%%
Set /A "FolderCount+=1"
))>"%OutputFile%"
Goto:EOF



REM ===============
REM Error Controls:
REM ===============

:CheckErrors
:: 'IncludeHiddenFolders' Value check.
If /I "%IncludeHiddenFolders%" NEQ "True" If /I "%IncludeHiddenFolders%" NEQ "False" (
Echo [x] Error parsing parameter 'IncludeHiddenFolders',
Echo     value '%IncludeHiddenFolders%' is not a Boolean value.
Pause&Exit
)

Goto:EOF








Trebla1011

Wow, :o :o
Buen script Elektro, Muy útil cuando tienes las carpetas tan desordenadas como yo.
Pero, ¿A que viene la función del tiempo? xD
Saludos

Eleкtro

Cita de: Trebla1011 en 12 Abril 2014, 10:24 AMPero, ¿A que viene la función del tiempo? xD

Es un simple capricho, la verdad es que el script trabaja rápido pero aun así me gusta saber cuanto tarda, estoy acostumbrado a medir el tiempo de ejecución en la programación .NET para optimizar los procedimientos que den señales de conflictos en el tiempo de ejecución.

PD: Gracias por comentar.

Saludos!