Windows 10批处理文件-测试目录是否存在,复制文件,出错时发出蜂鸣声

时间:2019-02-10 17:37:00

标签: batch-file windows-10 file-exists

我一直在该站点上查看许多帖子,以查看我在做什么错,但是我无法使用这个简单的脚本来工作。

该脚本存储在我的%MyDocuments%\ IT \ scripts \文件夹中,该文件夹位于我的PATH中。我将CD光盘放入要从中运行脚本的文件夹,然后调用它并传递带有照片的号码,即

r5 0893

如果文件夹。\ Rejects不存在,则需要创建它。然后它尝试将文件移到Rejects子文件夹,如果复制失败,我想发出哔声,例如我输入的照片编号不存在。

:: echo off
if exist Rejects 
(
    echo Rejects\ found, goto DirectoryExists
    goto DirectoryExists
)
else
(
    echo Creating Rejects\ folder
    mkdir Rejects 
)
:DirectoryExists
:: pause
echo if not exist 2X9A%1.jpg
if not exist 2X9A%1.jpg
(
    echo "File 2X9A%1.jpg not found!!!"
    rundll32 user32.dll,MessageBeep
)
Else
(
    echo move 2X9A%1.jpg To Rejects\
    move 2X9A%1.jpg Rejects\
)
:: pause

此外,这些命令一次只能在命令提示符下运行,而不能在批处理文件中运行! :

D:\Photos\2018\1.06. Leyla>r5 0489
The syntax of the command is incorrect.
D:\Photos\2018\1.06. Leyla>if exist Rejects
D:\Photos\2018\1.06. Leyla>if exist Rejects echo Yes
Yes

我在做什么错??

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您的代码必须像这样固定:

@echo off

if exist Rejects (
    echo Rejects\ found, going to DirectoryExists
    goto DirectoryExists
) else (
    echo Creating Rejects\ folder
    mkdir Rejects 
)

:DirectoryExists
rem pause
echo if not exist 2X9A%1.jpg

if not exist 2X9A%1.jpg (
    echo "File 2X9A%1.jpg not found!"
    rundll32 user32.dll,MessageBeep
) else (
    echo move 2X9A%1.jpg To Rejects\
    move 2X9A%1.jpg Rejects\
)

pause

您似乎在使用低/中级语言进行编程。但是,这是批处理文件中if的默认语法。

if /?中输入cmd.exe,以了解有关其语法的更多信息。

答案 1 :(得分:1)

我知道您已经接受了一个答案,该答案向您展示了如何使用@thread.skype / If语句,但是我认为您应该考虑重新安排脚本,如下所示:

Else

的想法是,如果文件不存在,则不要创建可能丢失的目录; (如果当前目录不是您期望的目录,这也将有所帮助)。我还添加了必要的尾部反斜杠,以确保存在性检查针对的是目录而不是名为@Echo Off If "%~1"=="" Exit /B If Not Exist "2X9A%~1.jpg" ( Echo "File 2X9A%~1.jpg not found!!!" Rundll32 User32.dll,MessageBeep Pause Exit /B ) If Not Exist "Rejects\" ( Echo Creating Rejects directory MD "Rejects" 2>Nul || Exit /B ) Echo Moving 2X9A%1.jpg to Rejects directory Move /Y "2X9A%1.jpg" "Rejects" Pause 的文件。您还会注意到,我已经删除了Rejects语句,因为它们并不是真正需要的。