Batch File: FOR /F doesn't work if path has spaces

后端 未结 3 1980
粉色の甜心
粉色の甜心 2020-12-06 16:54

This is the problem I\'m having:

@ECHO OFF

REM If this batch file is run in the same directory as \"command.exe\" then the
REM following line will work.
FOR         


        
相关标签:
3条回答
  • 2020-12-06 17:21

    The call trick of Andriy M is clever and works fine, but I tried to understand the problem here.

    This problem is caused by the cmd.exe, as you can read at cmd /help

    ....
    the first and the last quote will be removed, when there are not exactly two quotes in the line.
    ...

    So there is also another solution with simply adding two extra quotes

    FOR /F "usebackq=" %%A IN (`""C:\Folder Space\myCmd.exe" "Param space""`) DO (
        ECHO %%A
    )
    
    0 讨论(0)
  • 2020-12-06 17:28

    Careful:

    Using 'call' (as shown by Andriy M) seems the safest option.

    I found a case where adding leading and trailing double quotes (as suggested as a possible solution by jeb) has a problem.

    Problem:

    for /f "delims=" %%i in ('""C:\path with spaces\hello.bat" "filename with an & ampersand.jpg""') do ( echo output=%%i )

    cmd.exe's output: & was unexpected at this time.

    Solution:

    for /f "delims=" %%i in ('call "C:\path with spaces\hello.bat" "filename with an & ampersand.jpg"') do ( echo output=%%i )

    0 讨论(0)
  • 2020-12-06 17:29

    Add CALL before the program name:

    FOR /F "usebackq" %%A IN (`CALL "C:\Folder With Spaces\command.exe" "C:\File Being Passed as a Parameter.txt"`) DO ECHO %%A
    
    0 讨论(0)
提交回复
热议问题