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

Batch file 访问空间文件名时无法运行批处理,batch-file,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 (

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

如果目录名或文件名包含空格,则需要将它们用双引号括起来


例如:“v loop.txt”

正如LotPings所说,要解析带有For/f引号的文件,必须使用选项usebackq。因此修改后的代码如下: usebackq使用备用报价样式:
-在“filenameset”中包含空格的长文件名使用双引号。 -对“要处理的文本字符串”使用单引号 -使用
命令的反引号来处理

@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
#
#要用引号解析文件,请使用选项
usebackq
So
for/f“usebackq tokens=%1 delims=;”(“v lop.txt”)中的%%i do(
应该这样做。代码中没有标签结尾。非常感谢!问题已成功解决。