批处理:如果它包含某个字符串,则跳过该文件夹

时间:2018-06-10 00:16:46

标签: batch-file

我正在尝试创建一个批处理脚本,将目录中的文件夹移动到同一目录中的另一个文件夹中。但是,我想跳过以“FILES-”开头的文件夹(文件夹名称的其余部分由随机字符组成)。

这是我到目前为止所做的:

echo #### moving folders into newly created folder...
for /D %%D in ("C:\Users\reite\Downloads\*.*") do (
        if /I not "%%~nxD"=="FILES" (
        move "%%~D" "C:\Users\reite\Downloads\%datestamp%"
    )
)

我将如何继续解决这个问题?

2 个答案:

答案 0 :(得分:1)

这个怎么样:

echo #### moving folders into newly created folder...
for /D %%D in ("C:\Users\reite\Downloads\*.*") do (
    for /F "delims=- eol=-" %%N in ("_%%~nxD") do (
        if /I not "%%N"=="FILES" (
            move "%%~D" "C:\Users\reite\Downloads\%datestamp%"
        )
    )
)

for /F命令将文件夹名称拆分为-个字符。前导_旨在避免--FILES-*等错误匹配,并且不会跳过---等文件夹。

答案 1 :(得分:0)

我会使用findstr / b而不是for:

echo #### moving folders into newly created folder...
for /D %%D in ("%userprofile%\Downloads\*") do (
        echo/%%~nxD|findstr /I /B "FILES-">nul||move "%%~D" "%userprofile%\Downloads\%datestamp%"
)