我想使用批处理文件创建“新文件夹”

时间:2016-12-13 13:55:04

标签: batch-file

如果“新文件夹”已经存在,我想在桌面和“新文件夹(2)”中创建“新文件夹”。但我每次都以两个文件夹结束。我想检查条件或while循环,无论你建议如何实现它。

mkdir C:\Users\kdk\Desktop\"New folder"
if exist C:\Users\kdk\Desktop\"New folder" mkdir C:\Users\kdk\Desktop\"New folder (2)"

6 个答案:

答案 0 :(得分:1)

这会使用计数器并在每次运行时创建一个新文件夹(new foldernew folder (1)new folder (2) ...)

@echo off
set  counter=0
mkdir "new folder" 2>nul || goto :TryNext
:continue
REM rest of your code

goto :eof
:TryNext
set /a counter+=1
mkdir "new folder (%counter%)" 2>nul || goto :TryNext
goto :continue

||充当"如果mkdir失败*)那么"
2>nul禁止错误消息("子目录已存在")

*)因为该文件夹已存在

答案 1 :(得分:0)

每次最终都会有两个文件夹,因为您的第一个语句不是有条件的。这意味着无论在什么情况下都会创建一个“新文件夹”。您的第一个条件语句检查是否存在该文件夹,该文件夹将始终在第一行创建,因此条件将始终为true ...每次运行脚本时创建“New folder(2)”。

答案 2 :(得分:0)

使用

if exist "C:\Users\kdk\Desktop\New folder" (
    mkdir "C:\Users\kdk\Desktop\New folder (2)"
) else (
    mkdir "C:\Users\kdk\Desktop\New folder"
)

代替。

在您的代码中,您检查它是否存在于第二行,但它将始终存在,因为您的第一行将创建"新文件夹"它已经存在或不存在。所以两个目录总是被创建

答案 3 :(得分:0)

if exist C:\Users\kdk\Desktop\"New folder" mkdir C:\Users\kdk\Desktop\"New folder (2)"
mkdir C:\Users\kdk\Desktop\"New folder"

似乎是一个明显的解决方案 - 报价定位是另一个问题。

答案 4 :(得分:0)

你的逻辑错了。您正在创建一个目录,然后检查它是否存在;除非创建目录没有限制,否则检查总是会成功。

为了实现目标,您需要提前检查是否存在:

rem // Check for existance of first directory:
if exist "C:\Users\kdk\Desktop\New folder\" (
    rem // First directory exists, so create second one:
    mkdir "C:\Users\kdk\Desktop\New folder (2)"
) else (
    rem // First directory does not exist, so create it:
    mkdir "C:\Users\kdk\Desktop\New folder"
)

或者:

rem // Check for existance of first directory; if exists, create second one:
if exist "C:\Users\kdk\Desktop\New folder\" mkdir "C:\Users\kdk\Desktop\New folder (2)"
rem // Create first directory, suppress error message in case it already exists:
mkdir "C:\Users\kdk\Desktop\New folder" 2> nul

我在\的路径上添加了一个尾随if exist,以便检查现有目录;没有它,if exist会检查现有文件目录。

我还假设您的第二个目录应与第一个目录位于同一位置(您说明C:\Users\K YOKESH\Desktop,我认为它应该是C:\Users\kdk\Desktop)。

关于引用:您应该始终将整个路径包含在""内,而不仅仅是单个路径元素 - 请参阅上面我是如何做到的。

只是提示:为了避免多次声明相同的路径,您可以使用环境变量:

rem // Define paths here:
set "FirstDir=C:\Users\kdk\Desktop\New folder"
set "SecondDir=C:\Users\kdk\Desktop\New folder (2)"

rem // Check for existance of first directory:
if exist "%FirstDir\" (
    rem // First directory exists, so create second one:
    mkdir "%SecondDir%"
) else (
    rem // First directory does not exist, so create it:
    mkdir "%FirstDir%"
)

或者:

rem // Define paths here:
set "FirstDir=C:\Users\kdk\Desktop\New folder"
set "SecondDir=C:\Users\kdk\Desktop\New folder (2)"

rem // Check for existance of first directory; if exists, create second one:
if exist "%FirstDir%\" mkdir "%SecondDir%"
rem // Create first directory, suppress error message in case it already exists:
mkdir "%FirstDir%" 2> nul

答案 5 :(得分:-1)

尝试这个

创建目录:mkdir“目录路径+目录名”

更改目录:cd“目录路径+目录名称”

希望如此对您有帮助。