批量创建文件夹

时间:2013-12-15 18:57:31

标签: batch-file

我非常喜欢听我的音乐,最近我发现需要整理我的文件夹。我有我的音乐文件夹,在里面,我有Genre \ Artist \ Album格式的文件夹。我想为Music文件夹中的每个子文件夹创建一个Favorites文件夹,但我已经创建了一些收藏夹文件夹:

我正在尝试创建一个批处理脚本,将“收藏夹”文件夹添加到每个子文件夹,但“收藏夹”和“唱片目录信息”文件夹除外。

我知道这一点:

for /r "%windir%\Users\%username%\My Music" %%s in (.) do md "Favorites" "%%s"

...必须使用,但我不知道在多个文件夹中创建文件夹的必要命令。

如何在批量文件夹创建过程中创建例外? 如何扩展上述命令的范围?

3 个答案:

答案 0 :(得分:0)

我的批处理脚本有点生疏,但您可以使用findstr命令过滤掉字符串。根据您的需要,这应该足够好了。它会将文件夹添加到不包含单词FavoritesDiscography的路径和路径:

set targetdir="%windir%\Users\%username%\My Music"
dir %targetdir% /ad /b /s > %temp%\@contents.txt
for /f "delims=" %%d in ('findstr /i /v "\<Favorites\> \<Discography\>" "%temp%\@contents.txt"') do md %%d\Favorites

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
SET "targetdir=c:\destdir"
for /f "delims=" %%s in ('dir /b /s /ad "%targetdir%"') do SET tdir=%%s\&CALL :test&IF DEFINED tdir ECHO md "%%s\Favorites"
GOTO :EOF
:test
SET $test=%tdir:\Discography\=%
SET $test=%$test:\Favorites\=%
IF NOT "%tdir%"=="%$test%" SET "tdir="
GOTO :eof

所需命令仅用于ECHO以用于测试目的。在确认命令正确无误后,将ECHO MD更改为MD以实际创建目录。

请注意,尝试创建已存在的目录时,将显示错误消息。这是无害的,但很难看。您可以通过将2>nul附加到每个MD ...行来阻止错误消息。

答案 2 :(得分:0)

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "root=%windir%\Users\%username%\My Music"

    for /r "%root%" %%s in (.) do if not exist "%%~fs\Favorites" (
        if /i not "%%~nxs"=="Discography" if /i not "%%~nxs"=="Favorites" (
            if /i not "%%~fs"=="%root%" echo md "%%~fs\Favorites"
        )
    )

    endlocal

根据需要进行调整。输出到控制台正确后,删除echo之前的md命令以创建目录