确定给定变量是否是目录

时间:2016-04-01 20:20:12

标签: batch-file

我有一个批处理文件脚本,需要验证用户输入的目录是否是真实的目录或路径,以便我可以创建它,如果它不存在的话。

:GetDir
set /p Dir=
if not <is directory?> %Dir% goto:GetDir
if not exist %Dir% mkdir %Dir%

如何判断用户提供的值是否为目录? 用户可以输入的数百万内容显然不是目录。

编辑说明: 编辑器读取后将删除此注释。如果我不应该添加此笔记,我会提前道歉。请更正我所以如果是这样的话我不会再这样做了,如果出现类似的情况我会很高兴被告知在哪里添加这些类型的笔记再次。我试图保持并恢复这个问题,从我最初问这个问题,以便修复我在这里提出不好问题的不良声誉。这不是一个重复的问题,因为标记的副本使用的是我不熟悉的不同脚本语言。我还想提一下,在我就这个问题提出这个问题之前,我做了一些繁重的研究。如果能够再次启用回答这个问题,我也会非常感激,这样我就可以回答我自己的问题,因为我不确定其他人是否会得到答案,而且我现在知道如何回答。

4 个答案:

答案 0 :(得分:1)

How do I test if a file is a directory in a Batch script ?

@echo off
set VAR="C:\Program Files"
FOR %%i IN (%VAR%) DO IF EXIST %%~si\NUL ECHO %VAR% It's a directory 
pause

答案 1 :(得分:1)

您可以使用它来测试它是否特别是目录(而不是文件)

@echo off
set "file=C:\someDirectory"
if exist "%file%\." echo directory
pause

答案 2 :(得分:0)

这是确定目录是否存在的一种方式(确实有两种方式),它实际上是一个目录而不是文件。

set /p "ServerMods=Enter a Directory: "

REM First, make sure the input ends with a backslash (\)
if %ServerMods:~-1% NEQ "\" set "ServerMods=%ServerMods%\

REM Option 1
if not exist %ServerMods% goto :GetDir

REM Option 2
dir %ServerMods% 1>nul 2>nul || (goto :GetDir)

答案 3 :(得分:-1)

if exist "%ServerMods%\." goto GetDir