Batch file 无法使用批处理脚本将tiff图像排序到特定文件夹

Batch file 无法使用批处理脚本将tiff图像排序到特定文件夹,batch-file,Batch File,我目前正在尝试创建一个批处理脚本,以便根据用户输入将多个tiff图像移动到其他特定文件夹,从而对文件夹中的多个tiff图像进行排序。到目前为止,我取得的成就是: 1.可以循环浏览文件夹中的所有文件 2.可以打开图像查看器查看tiff文件 3.关闭图像查看器程序 4.将tiff文件移动到特定文件夹 然而,我不知道为什么我的set/p在尝试回显输入时没有注册用户的输入值 cmd给我的回音是关闭的消息 如果有人能帮我解决这个问题,我将不胜感激 非常感谢 G 一些小问题 首先,不能在带括号的一系列命令的

我目前正在尝试创建一个批处理脚本,以便根据用户输入将多个tiff图像移动到其他特定文件夹,从而对文件夹中的多个tiff图像进行排序。到目前为止,我取得的成就是: 1.可以循环浏览文件夹中的所有文件 2.可以打开图像查看器查看tiff文件 3.关闭图像查看器程序 4.将tiff文件移动到特定文件夹

然而,我不知道为什么我的set/p在尝试回显输入时没有注册用户的输入值

cmd给我的回音是关闭的消息

如果有人能帮我解决这个问题,我将不胜感激

非常感谢 G

一些小问题

首先,不能在带括号的一系列命令的代码块内使用标签,其次是最常用的delayedexpansion-如果在代码块内更改了变量,则除非延迟扩展生效,否则将使用原始值。如果延迟扩展生效,则%var%指的是原始值和!瓦尔!设置为当前运行时值

还请注意,如果用户只需输入响应,set/p不会更改变量的值,因此set name=将清除其值。当然,您可以省略该行,如果您只需按Enter键,则将再次使用上次输入的name值

有很多关于延迟扩展的文章,只需使用搜索功能即可

@ECHO OFF
cd "C:\img\"
FOR /R %%f IN (*.tif) DO (
echo Current file is: %%f
start "" "C:\Program Files (x86)\Common Files\Global 360\Imaging\kodakprv.EXE" %%f
set /p name= Action:
IF "%name%" == "1" GOTO ONE
IF "%name%" == "2" GOTO TWO
IF "%name%" == "3" GOTO THREE
ECHO %name%
echo None of the above, BYE!
GOTO END

:ONE
echo "I pressed 1"
taskkill /IM kodakprv.EXE
move %%f "C:\img\1"
cls

:TWO
echo "I pressed 2"
taskkill /IM kodakprv.EXE
move %%f "C:\img\2"
cls

:THREE
echo "I pressed 3"
taskkill /IM kodakprv.EXE
move %%f "C:\img\3"
cls
)
:END
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
cd "C:\img\"
FOR /R %%f IN (*.tif) DO (
 echo Current file is: %%f
 start "" "C:\Program Files (x86)\Common Files\Global 360\Imaging\kodakprv.EXE" %%f
 SET "name="
 set /p name= Action:
 for %%v in (1 2 3) do IF "!name!" == "%%v" (
  set "validaction=Y"
  echo "I pressed %%v"
  taskkill /IM kodakprv.EXE
  move %%f "C:\img\%%v"
  pause
  cls
 )
 if not defined validaction (
  ECHO !name!
  echo None of the above, BYE!
  GOTO END
 )
)

:END