我有一些文件和一些文件夹。
我使用此脚本将所有文件移动.pdf
到文件夹中。
@echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "eol=| delims=" %%I in ('dir /AD /B /O-N 2^>nul') do if exist "%%I*.pdf" move /Y "%%I*.pdf" "%%I\"
endlocal
但我还想移动.rar
、、.cbr
文件.cbz
。
我该如何添加这些扩展名?
答案1
我该如何添加这些扩展?
这是一个解决方案。
echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "eol=| delims=" %%I in ('dir /AD /B /O-N 2^>nul') do (
if exist "%%I*.pdf" move /Y "%%I*.pdf" "%%I\"
if exist "%%I*.rar" move /Y "%%I*.rar" "%%I\"
if exist "%%I*.cbr" move /Y "%%I*.cbr" "%%I\"
if exist "%%I*.cbz" move /Y "%%I*.cbz" "%%I\"
)
答案2
您可以用if exist
以下move
命令替换2>nul
如果文件存在,它们将通过单个命令移动,如果文件不存在,任何错误消息都将被抑制,并且潜在错误不会对文件产生影响,它只会出现在屏幕上。
对于这种可预见的错误并且没有重大影响,您只能抑制消息。
它与循环dir
内的命令中使用的处理方式相同for /f
dir / ... 2>nul
使用附加for
循环并根据需要添加尽可能多的扩展:
@echo off && setlocal EnableExtensions DisableDelayedExpansion
for /F tokens^=* %%I in ('dir /A:D /B /O:-N 2^>nul')do for %%i in (
rar,zip,cbr,cbz,pdf)do 2>nul move/Y ".\\%%~I*.%%~i" ".\\%%~I\."
endlocal
- 其他资源: