批处理程序操作会操作到子文件夹,怎样避免?

Supertramplee 2015-02-22 10:04:33
大致功能是实现筛选文件的。
如 1 功能是 文件夹下若有123.cr2 无 123.jpg 则删除123.cr2
2功能 移动文件夹下所有.cr2文件到CR2文件夹
3功能 移动没有对应.jpg文件的.cr2文件
4退出。

可是运行发现 出现了操作涉及到了子文件夹的情况,即移动时会将子文件夹的文件一起判断然后移动。。
理想状态是 1 2 3 操作都是只针对BAT文件所在文件夹而不涉及子文件夹。
希望得到解决!谢谢各位了!Q547471962
代码有点乱 多多包涵!


-------------------------------------------------------------------------------------------------------
:INPUT
cls
@echo off
@echo.
@echo [1] 删除无JPG的CR2
@ECHO [2] 移动所有CR2到新建文件夹
@ECHO [3] 筛选无JPG的CR2
@ECHO [4] 退出
@echo.
@echo.
set /p x= 请输入:
If "%x%"=="1" goto :delet
If "%x%"=="2" goto :mov
If "%x%"=="3" goto :shaixuan
If "%x%"=="4" goto :end

:shaixuan
if not "%~1"=="" CD /D "%~1"
for /R %%F in (*.cr2) do (
call :mov2 "%%F")

@echo.
@echo.
@echo finish_move!
@echo.
@echo.
pause
goto :input

:mov2
IF NOT EXIST 单CR2 md 单CR2
if not exist "%~dpn1.jpg" %DEBUG% move "%~1" 单CR2
goto :end

:delet
@echo off
REM set DEBUG=echo
if not "%~1"=="" CD /D "%~1"
for /R %%F in (*.cr2) do (
call :delraw "%%F")

)
@echo.
@echo.
@echo finish_delete!
@echo.
@echo.
pause
goto :input

:delraw
if not exist "%~dpn1.jpg" %DEBUG% del /q /f "%~1"
goto :end

:mov
@echo off
md CR2
move *.cr2 cr2
@echo.
@echo.
@echo finish move!
@echo.
@echo.
pause
goto input

:end
-------------------------------------------------------------------------------------------------------
...全文
132 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-02-23
  • 打赏
  • 举报
回复
for /R %%F in (*.cr2) do ( 改为 for /F %%F in (*.cr2) do ( 试试看。不一定对。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧