访问空间文件名时无法运行批处理

时间:2017-08-03 16:38:38

标签: batch-file

使用空格访问文件名时,批处理会发生一些事情。 “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

2 个答案:

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