gen_dirstruct.cmd 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem Generate directory structure file for Visual Studio extension project
  4. rem Excludes: .vs, bin, obj directories and *.user files
  5. set OUTPUT_FILE=directory_structure.txt
  6. set CURRENT_DIR=%CD%
  7. echo Generating directory structure...
  8. echo Project Directory Structure > "%OUTPUT_FILE%"
  9. echo Generated on: %DATE% %TIME% >> "%OUTPUT_FILE%"
  10. echo Root: %CURRENT_DIR% >> "%OUTPUT_FILE%"
  11. echo. >> "%OUTPUT_FILE%"
  12. rem Function to process directory recursively
  13. call :ProcessDirectory "." ""
  14. echo.
  15. echo Directory structure generated successfully in: %OUTPUT_FILE%
  16. pause
  17. goto :eof
  18. :ProcessDirectory
  19. set "dir_path=%~1"
  20. set "indent=%~2"
  21. rem Get directory name for display
  22. for %%F in ("%dir_path%") do set "dir_name=%%~nxF"
  23. rem Skip excluded directories
  24. if /i "%dir_name%"==".vs" goto :eof
  25. if /i "%dir_name%"=="bin" goto :eof
  26. if /i "%dir_name%"=="obj" goto :eof
  27. if /i "%dir_name%"=="packages" goto :eof
  28. if /i "%dir_name%"==".git" goto :eof
  29. if /i "%dir_name%"=="node_modules" goto :eof
  30. rem Print current directory (except root)
  31. if not "%dir_path%"=="." (
  32. echo %indent%%dir_name%/ >> "%OUTPUT_FILE%"
  33. set "new_indent=%indent% "
  34. ) else (
  35. set "new_indent="
  36. )
  37. rem Process files in current directory
  38. for %%F in ("%dir_path%\*") do (
  39. set "file_name=%%~nxF"
  40. set "file_ext=%%~xF"
  41. rem Skip user-specific and temporary files
  42. if /i not "!file_ext!"==".user" (
  43. if /i not "!file_ext!"==".suo" (
  44. if /i not "!file_ext!"==".cache" (
  45. if /i not "!file_name!"==".gitignore" (
  46. if /i not "!file_name!"=="Thumbs.db" (
  47. if /i not "!file_name!"=="Desktop.ini" (
  48. echo %new_indent%!file_name! >> "%OUTPUT_FILE%"
  49. )
  50. )
  51. )
  52. )
  53. )
  54. )
  55. )
  56. rem Process subdirectories
  57. for /d %%D in ("%dir_path%\*") do (
  58. call :ProcessDirectory "%%D" "%new_indent%"
  59. )
  60. goto :eof