batch-file - 如何正确使用 IF 和 GOTO 语句

标签 batch-file if-statement goto

我对编写批处理文件的经验为零,但我的目标似乎并不困难。我正在尝试编写一个小脚本,提示用户输入 ID 号,然后搜索 .jpg 目录并将包含 ID 号的任何图片复制到单独的目录。 .jpg 是名称 xxxxxx_zzz.jpg,其中 xxxxxx 是最多 6 位的 ID 号,zzz 是序列号。比如一个ID可以有很多张图片:123456_001.jpg、123456_002.jpg、123456_003.jpg等。

我玩过几个 IFGOTO 命令,但我似乎偏离了我的目标。我知道我目前在下面使用的两个 IF 语句是垃圾,但我将它们留在语法中以传达我认为我应该前进的方向。

我无法让 IF 语句使用 GOTO 命令。我也不认为我完全理解标签应该如何工作。

   @ECHO OFF
   CLS
:START
   DEL /q C:\Users\ADMIN\Desktop\temp\*.*
:GETINPUT
   set /p propkey=Enter the Property Key of pictures to retrieve.:
   IF EXIST C:\Users\ADMIN\Desktop\photos\*%propkey%_???.jpg GOTO Success
   IF "%propkey%"=="" ECHO No Property Key was entered. GOTO START
:Success
   ECHO Pictures from Property Key %propkey% will now be moved to the Temp folder on the Desktop. && PAUSE
   COPY "C:\Users\ADMIN\Desktop\photos\*%propkey%*.jpg" "C:\Users\ADMIN\Desktop\temp\"
   START C:\Users\ADMIN\Desktop\temp\
:END

最佳答案

试试这个:

:Start
   @echo off
   cls
   :: store source folder
   set _sd=C:\Users\ADMIN\Desktop\photos
   :: store target folder
   set _td=C:\Users\ADMIN\Desktop\temp
:CheckFolders
   if not exist %_sd% echo Source folder not found.&goto End
   if not exist %_td% echo Target folder not found.&goto End
   :: wipe target folder
   del /q %_td%\*.*
:GetKey
   set /p _key=Enter the property key:
   if '%_key'=='' echo No property key entered. Please retry.&goto GetKey
   if not exist "%_sd%\*%_key%*.jpg" echo No photos matched the key.&goto End
   echo Copying pictures to %_td%...
   copy "%_sd%\*%_key%*.jpg" "%_td%"
:OpenFolder
   start "%windir%\explorer.exe" "%_td%"
:End

标签是一种在批处理文件中任意指定一行的方法。 GOTO 命令使用它来更改命令执行的通常从上到下的进程,指定接下来应该处理哪一行。您可能已经想到,将 IF 命令与 GOTO 结合使用可以进行条件处理,例如在满足值或遇到错误时。

标签的另一种用途是用于文档或清晰度。在我上面的示例中,GOTO 没有使用“CheckFolders”,但它让程序员提示该部分代码的作用。

关于batch-file - 如何正确使用 IF 和 GOTO 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20531548/

相关文章:

javascript - 如果未选中复选框,如何禁用注册按钮?

java - 带有加号字符的字符串匹配方法返回 false

C++-(If 语句)Else 总是显示

C++ 转到变量

windows - 使用模式匹配删除 windows 文件夹

powershell - 从批处理文件运行 Powershell 脚本中的参数

batch-file - [NT Batch]如何从用户输入的文件中获取目录?

java - 从任务计划程序运行时,从 Java 应用程序打开网页不起作用

loops - 如何解决此错误?帕斯卡

c - "Local"C 中的标签和跳转表实现