gpt4 book ai didi

batch-file - 文件路径中有空白空间的 Batch-Hell

转载 作者:行者123 更新时间:2023-12-05 07:17:56 30 4
gpt4 key购买 nike

目前我正处于批处理 hell 中。我想通过批处理文件调用我的 powershell 脚本。只要路径中没有空格,这就可以正常工作。例如,这是有效的

          set DATAPATH="%~1"
set XMLFILE="%~2"
set PSFILE="C:\dev\workflow\handler.ps1"
echo %PSFILE%
echo powershell -command %PSFILE% -datapath """%DATAPATH%""" -xmlFile """%XMLFILE%"""
powershell -command %PSFILE% -datapath """%DATAPATH%""" -xmlFile """%XMLFILE%"""
IF %ERRORLEVEL% == 0 (echo true) else (echo false)

当我将其更改为使用在文件路径中包含空格的路径时,它不起作用。

    set DATAPATH="%~1"
set XMLFILE="%~2"
set PSFILE="C:\dev\work flow\handler.ps1"
echo %PSFILE%
echo powershell -command %PSFILE% -datapath """%DATAPATH%""" -xmlFile """%XMLFILE%"""
powershell -command %PSFILE% -datapath """%DATAPATH%""" -xmlFile """%XMLFILE%"""
IF %ERRORLEVEL% == 0 (echo true) else (echo false)

错误消息“C:\dev\work”未找到作为 cmdlet 的名称,这表明空间是问题的根源。任何想法我也尝试过像这样定义变量 PSFILE

set PSFILE="""C:\dev\work flow\handler.ps1"""

也许有人知道解决方案并向我展示如何处理批处理文件路径中的空格。

enter image description here

最佳答案

cmd 将空格视为命令和参数之间的分隔符。所以你需要:

    set "DATAPATH=%~1"
set "XMLFILE=%~2"
set "PSFILE=C:\dev\work flow\handler.ps1"
echo "%PSFILE%"
echo powershell -file "%PSFILE%" -datapath "%DATAPATH%" -xmlFile "%XMLFILE%"
powershell -file "%PSFILE%" -datapath "%DATAPATH%" -xmlFile "%XMLFILE%"
IF %ERRORLEVEL% equ 0 (echo true) else (echo false)

请注意双引号在变量之前开始并在变量末尾结束。

另请注意,在 if 语句中使用 equ 而不是 ==

关于batch-file - 文件路径中有空白空间的 Batch-Hell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58589749/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com