【发布时间】:2018-10-28 22:56:12
【问题描述】:
我有以下批处理脚本:
@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 会正确地得到 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。
怎么了?
感谢您的帮助。
【问题讨论】:
-
由于目录名包含一个分隔符(空格),您需要“引用名称”并且因为
directoryContainsFiles是一个变量的名称,那么您需要@ 987654331@ 或者最好是IF NOT EXIST "%directoryContainsFiles%\." (,其中%varname%传递变量的内容。我展示的第二种形式检测目录。第一个检测文件或目录。您的代码试图检测一个名为directoryContainsFiles的目录(或文件) - 我假设 not 存在。 -
@Magoo,
if not exist "%directoryContainsFiles%\."中的尾随点必须删除才能检查现有目录... -
@aschipfl : 哦 - 很好看!你是对的!
标签: batch-file scripting