我非常喜欢听我的音乐,最近我发现需要整理我的文件夹。我有我的音乐文件夹,在里面,我有Genre \ Artist \ Album格式的文件夹。我想为Music文件夹中的每个子文件夹创建一个Favorites文件夹,但我已经创建了一些收藏夹文件夹:
我正在尝试创建一个批处理脚本,将“收藏夹”文件夹添加到每个子文件夹,但“收藏夹”和“唱片目录信息”文件夹除外。
我知道这一点:
for /r "%windir%\Users\%username%\My Music" %%s in (.) do md "Favorites" "%%s"
...必须使用,但我不知道在多个文件夹中创建文件夹的必要命令。
如何在批量文件夹创建过程中创建例外? 如何扩展上述命令的范围?
答案 0 :(得分:0)
我的批处理脚本有点生疏,但您可以使用findstr
命令过滤掉字符串。根据您的需要,这应该足够好了。它会将文件夹添加到不包含单词Favorites
或Discography
的路径和路径:
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
命令以创建目录