【问题标题】:Batch File - Syntax Incorrect (Going inside a directory)批处理文件 - 语法不正确(进入目录)
【发布时间】:2012-12-31 11:34:19
【问题描述】:

我正在编写一个批处理脚本来进入一个文件夹,如果它存在就做某件事,如果它不做其他事情

我的层次结构如下:-

  C:\Validation\docs\chm\help.chw

我想转到这个“help.chw”文件,这就是我正在做的事情并得到错误

IF EXIST docs (
CD docs echo curr dir = %CD% goto imagefolder 
) 

IF EXIST docs (
CD docs echo curr dir = %CD% goto imagefolder 
) 

ECHO Please include 'docs' folder in the current working directory
ECHO.
ECHO The program would close now , restart the batch file after making the changes cited above
ECHO.
goto exit

这是我写的

 IF EXIST docs (
 CD "docs"
 echo curr dir = %CD%
 goto imagefolder

)

它给了

 C:\Validation MSI

【问题讨论】:

    标签: batch-file batch-processing cmd


    【解决方案1】:

    您正在尝试将cd 转换为docs echo curr dir = %CD% goto imagefolder,这显然是行不通的。

    cd 和其他命令之间划一条线。

    IF EXIST docs (
    CD docs
    echo curr dir = %CD%
    goto imagefolder 
    ) else (
    echo Folder not found
    )
    
    IF EXIST docs (
    CD docs
    echo curr dir = %CD%
    goto imagefolder 
    ) else (
    echo Folder not found
    )
    

    我也将您的 goto 行放在单独的行上,因为我假设它们不是发给 echo 的消息的一部分。

    更新

    您的代码没有回显实际当前目录的原因是因为cd 变量在if 括号内,这意味着其中的任何变量都是在运行时评估的,所以如果它们在括号结束之前更改,该值将与括号之前的值相同,在本例中为父目录。

    解决方法是启用延迟扩展,当它到达它们时会评估它们,而不是立即评估 while 块。

    setlocal enabledelayedexpansion
    IF EXIST docs (
    cd docs
    echo curr dir = !CD!
    goto imagefolder
    )
    

    【讨论】:

    • else部分是什么意思?
    • 我的意思是如果找不到某个文件夹,那么就会有一条消息回显
    • 好的,我似乎在转到“docs”后在这里写错了一些东西
    • 您需要引用路径,尝试cd "docs" 或其他文件夹。
    • 其实没关系, cd 不需要引号。您可以发布您正在使用的输出 C:\Validation 的内容吗?
    猜你喜欢
    • 1970-01-01
    • 2014-09-07
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多