需要遍历文件夹并将文档存储到变量中

时间:2013-06-14 19:09:28

标签: windows batch-file batch-processing batch-rename

我需要遍历文件夹并收集所有文档并将它们存储到变量中。我坚持如何完成这个过程。 (必须以批处理文件的形式完成)

目前我在这里:

@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)?

1 个答案:

答案 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}}