如何从批处理脚本中的命令行参数中提取文件位置(具有空格)

时间:2018-03-08 14:09:06

标签: batch-file

我的批处理文件接受4个参数: mybatch.bat -name =指向文件类型=某个预定义枚举的路径

然后我将它传递给另一个批处理文件以检查是否给出了两个值。

我的问题是,当我收到包含空格的路径时,如何提取文件的位置。它可能包含也可能不包含空格。

我知道如何处理没有空间。

主蝙蝠文件的内容

set arg1=%~1
set arg2=%~2
set arg3=%~3
set arg4=%~4
set name=
set sType=

if "%*" == "" (
goto Help 
)

call parse.bat
if %errorlevel% equ 1 (
goto error
) else if %errorlevel% equ 2 (
goto Help 
)
set file=%name%
FOR %%i IN ("%file%") DO (
set filedrive=%%~di
set filepath=%%~pi
set filename=%%~ni
)
set fileLoc=%filedrive%%filepath%
set name=%filename%

parse.bat的内容

if defined arg5 echo "invalid argument" & goto :error

if /I %arg1% equ -help (
exit /b 2
) else if /I %arg1% equ -h (
exit /b 2
)

if /I %arg1% equ -name (
    set name=!arg2!
) else if /I %arg1% equ -sType (
    set sType=%arg2%
) else (
    goto :error
)

if not defined arg3 goto :chkparam
if /I %arg3% equ -name (
    set name=%arg4%
) else if /I %arg3% equ -sType (
    set sType=%arg4%
) else (
    goto :error 
)

当我进入其间有空格的路径时,它说:

main.bat -name="c:\tmp\New folder\file2.txt" -stype=other
folder\file2.txt" -stype=other" was unexpected at this time.

0 个答案:

没有答案