我正在为工作创建一个简单的生产环境,这样做需要为批处理文件中的特定项目设置特定的环境变量。
这就是我想要实现的目标:1)定义一个环境变量,它将定义一个目录列表 2)递归每个目录并将所有叶子文件夹添加到最终环境变量中。
[编辑] 回顾我最初发布的内容后,我能够删除一些冗余。但是“输入行太长”。当 %LINE% 过长时会发生错误。使用短路径扩展确实有帮助,但它仍然会出错。接下来,我将看看如何按照建议将回显中断到临时文件。
这是我目前拥有的:
@echo off
set RECURSE_THESE_DIRS=C:\Users\eric\Autodesk
set TMP_FILE=%CD%TMP_FILE.%RANDOM%.txt
setLocal EnableDelayedExpansion
for %%i in (%RECURSE_THESE_DIRS%) do (
if exist %%~si\NUL (
for /f "tokens=*" %%G in ('dir /b /s /a:d %%i') do set LIST=!LIST!;%%G
)
)
set LIST=%LIST:~1%
rem !!! AT THE ECHO LINE BELOW IF %LIST% IS TOO LONG, THIS SCRIPT FAILS
rem !!! WITH The input line is too long. ERROR :(
echo %LIST%>%TMP_FILE%
endlocal
for /F "delims=" %%G in (%TMP_FILE%) do set FINAL_VAR=%%G
del /F %TMP_FILE%
因此,通过将 RECURSE_THESE_DIRS 设置为我希望解析的目录,我最终得到一个 %FINAL_VAR% ,我可以使用它来指定我使用的专有软件的路径。或者我可以使用此脚本附加到 %PATH% 等...
这对我有用,但我喜欢改进/简化我的脚本的建议?