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

Batch file 批处理:如果文件夹包含某个字符串,则跳过该文件夹,batch-file,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

我试图创建一个批处理脚本,将目录中的文件夹移动到同一目录中的另一个文件夹中。但是,我想跳过以“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%"
    )
)
我该如何继续解决这个问题呢?

这个呢:

echo####将文件夹移动到新创建的文件夹中。。。
对于/D%%D in(“C:\Users\reite\Downloads\*.*),请执行以下操作(
对于/F“delims=-eol=-”%%N in(“\u%%~ nxD”)do(
如果/I不是“%%N”==“文件”(
移动“%%~D”C:\Users\reite\Downloads\%datestamp%”
)
)
)

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

这样的文件夹。我想用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%"
)

如果在文件夹名称中出现特殊字符(例如,
&
),因为它们没有引号,则此操作可能失败;这就是我试图避开管道的原因之一;另一个是由于多个
cmd
实例而导致的性能更差…是的,你说得对。我认为你的解决方案更好。