首页 > 解决方案 > 批处理 - 检查目录是否不存在不起作用

问题描述

我有以下批处理脚本:

@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 位上)时, directoryContainsFilesgets echod 正确(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.

怎么了?

感谢你的帮助。

标签: batch-filescripting

解决方案


试试这个修改:

@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
)

推荐阅读