我需要遍历文件夹并收集所有文档并将它们存储到变量中。我坚持如何完成这个过程。 (必须以批处理文件的形式完成)
目前我在这里:
@echo off REM bat file to import documents into client REM set file location set loc="" FOR %%i IN (*) DO ECHO %%i
对于set loc我是否将其用作文件夹路径的变量?而对于循环是(*)变量(loc)?
答案 0 :(得分:1)
一般来说,您的请求不实用,因为变量最多可以容纳8191个字符。它不会超过变量的容量。
但是如果你知道文件的数量相对较少,而且文件名长度不是特别大,那么以下内容大部分时间都可以正常工作。
@echo off
setlocal enableDelayedExpansion
set "loc=,"
for %%F in (*) do (set loc=!loc!"%%F",)
set "loc=!loc:~1,-1!"
echo !loc!
在文件名包含!
的极少数情况下,上述操作失败,因为延迟展开会在%%F
包含!
时破坏!loc!
的值。
修复是从延迟扩展开始,然后在循环内打开和关闭它。额外的FOR / F循环用于在ENDLOCAL屏障上传输@echo off
setlocal disableDelayedExpansion
set "loc=,"
for %%F in (*) do (
setlocal enableDelayedExpansion
for /f "delims=" %%L in ("!loc!") do (
endlocal
(set loc=%%L"%%F",)
)
)
(set loc=%loc:~1,-1%)
echo %loc%
的值。
{{1}}