首页 > 解决方案 > 批处理脚本逻辑

问题描述

我正在寻找一种在批处理脚本中实现的逻辑。以下是我的案例

我在 中收到了文件名.eml_body,但是当我执行我的代码时文件名会有所不同,我已经安排了一个任务来每 5 分钟执行一次代码并生成文件。

例如,当我第一次执行代码时会生成文件1000.eml_body,第二次执行文件时会生成1001.eml_body. 在这里我只需要考虑文件的格式.eml_body,所以如果提到的目录中存在这种格式,我需要移动该目录中存在的其他文件。我写在下面的代码不是它给出错误

set str=.eml_body
if exist "D:\Cash_Apps_New\OutputFolder\New folder\%str% goto Move
:Move D:\Cash_Apps_New\OutputFolder\New folder\  * D:\Cash_Apps_New\OutputFolder\bckup

pause

标签: batch-file

解决方案


您不能将标签及其内容放在一行中,并且您需要始终使用双引号路径,尤其是带有空格且此处不需要 goto 的路径。

@echo off
set "str=.eml_body"
if exist "D:\Cash_Apps_New\OutputFolder\New folder\%str%" (
    move "D:\Cash_Apps_New\OutputFolder\New folder\*" "D:\Cash_Apps_New\OutputFolder\bckup"
)
pause

但是,如果您的意图是移动所有.eml_body文件,那么我想您只是想这样做:

move "D:\Cash_Apps_New\OutputFolder\New folder\*.eml_body" "D:\Cash_Apps_New\OutputFolder\bckup" /Y

编辑根据您现在更清晰的评论,这就是您想要的。

@echo off
for %%i in ("D:\Cash_Apps_New\OutputFolder\New folder\*") do if /i not "%%~xi"==".eml_body" if not "%%~i"=="%~nx0" move "%%~i" "D:\Cash_Apps_New\OutputFolder\bckup\%%~nxi"

推荐阅读