使用空格访问文件名时,批处理会发生一些事情。 “v loop.txt”被视为“v”,因此文件“v”不存在。我该如何解决这个问题?
@if not defined dbug echo off
set v=a;b;c;d;e
echo %v%> "v lop.txt"
for /l %%a in (1,1,5) do (
call :aa %%a
)
pause
:aa
for /f "tokens=%1 delims=;" %%i in ( "v lop.txt" ) do (
echo %%i
)
if "%1"=="5" goto :end
goto :eof
答案 0 :(得分:0)
正如LotPings所说,要使用for / f解析带引号的文件必须使用选项usebackq.so,修改后的代码如下:
usebackq使用备用引用样式:
- 对于包含“filenameset”中的空格的长文件名,请使用双引号。
- 使用单引号“文本字符串进行处理”
- 使用command to process
@if not defined debug echo off
set v=a;b;c;d;e
echo %v%> "v lop.txt"
for /l %%a in (1,1,5) do (
call :aa %%a
)
pause
:aa
for /f "usebackq tokens=%1 delims=;" %%i in ( "v lop.txt" ) do (
echo %%i
)
if "%1"=="5" goto :eof
goto :eof
#
答案 1 :(得分:-1)
如果目录或文件名包含空格,则需要用双引号将它们包装起来。
例如:" v loop.txt"