gen_dirstruct.cmd 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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%"==".claude" goto :eof
  30. if /i "%dir_name%"==".srcout" goto :eof
  31. if /i "%dir_name%"=="node_modules" goto :eof
  32. rem Print current directory (except root)
  33. if not "%dir_path%"=="." (
  34. echo %indent%%dir_name%/ >> "%OUTPUT_FILE%"
  35. set "new_indent=%indent% "
  36. ) else (
  37. set "new_indent="
  38. )
  39. rem Process files in current directory
  40. for %%F in ("%dir_path%\*") do (
  41. set "file_name=%%~nxF"
  42. set "file_ext=%%~xF"
  43. rem Skip user-specific and temporary files
  44. if /i not "!file_ext!"==".user" (
  45. if /i not "!file_ext!"==".suo" (
  46. if /i not "!file_ext!"==".cache" (
  47. if /i not "!file_name!"==".gitignore" (
  48. if /i not "!file_name!"=="Thumbs.db" (
  49. if /i not "!file_name!"=="Desktop.ini" (
  50. echo %new_indent%!file_name! >> "%OUTPUT_FILE%"
  51. )
  52. )
  53. )
  54. )
  55. )
  56. )
  57. )
  58. rem Process subdirectories
  59. for /d %%D in ("%dir_path%\*") do (
  60. call :ProcessDirectory "%%D" "%new_indent%"
  61. )
  62. goto :eof