我一直在该站点上查看许多帖子,以查看我在做什么错,但是我无法使用这个简单的脚本来工作。
该脚本存储在我的%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
我在做什么错??
感谢您的帮助!
答案 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
语句,因为它们并不是真正需要的。