批处理 - 检查目录是否不存在不起作用

时间:2018-05-18 13:23:33

标签: batch-file scripting

我有以下批处理脚本:

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS

SET directoryContainsFiles=%~f1

ECHO %directoryContainsFiles%

IF NOT EXIST directoryContainsFiles (
    ECHO "ERROR: 1. Argument -> Directory which should contain source files not found!"
    EXIT /B 1
)

当我运行命令
rename_media_files.cmd "G:\Projects\Rename Batch Script\testfolder\source"
(在cmd.exe - Windows 10 64位上)时,如果目录确实存在,则directoryContainsFiles获取echo d正确(G:\Projects\Rename Batch Script\testfolder\source)但IF NOT EXIST子句不起作用,因为我总是得到错误消息:ERROR: 1. Argument ...

我也尝试在目录路径中使用结尾反斜杠调用脚本:
rename_media_files.cmd "G:\Projects\Rename Batch Script\testfolder\source\"

我也尝试过(使用和不使用反斜杠)来检查nul文件:
IF NOT EXIST directoryContainsFiles/nul

有什么问题?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

尝试此修改:

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS

SET "directoryContainsFiles=%~f1"

ECHO=%directoryContainsFiles%

IF NOT EXIST "%directoryContainsFiles%\" (
    ECHO "ERROR: 1. Argument -> Directory which should contain source files not found!"
    EXIT /B 1
)

但是我认为首先没有SET变量的理由:

@ECHO OFF
ECHO=%~f1
IF NOT EXIST "%~f1\" (
    ECHO "ERROR: 1. Argument -> Directory which should contain source files not found!"
    EXIT /B 1
)