无法使用批处理脚本将tiff图像分类到特定文件夹

时间:2019-07-12 07:50:48

标签: batch-file

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

但是,当我尝试回显输入时,我不知道为什么我的set / p没有注册用户的输入值。

cmd给了我“ ECHO is off”消息。

感谢是否有人可以帮我解决这个问题。

非常感谢 G

@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

1 个答案:

答案 0 :(得分:1)

@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

一些小问题。

首先,您不能在code block(带括号的命令系列)中使用标签,其次才能使用旧的收藏夹delayedexpansion-如果变量在code block中被更改,则除非delayed expansion有效,将使用原始值。如果delayed expansion有效,则%var%引用原始值,!var!引用当前(运行时)值。

还请注意,如果用户响应只是 Enter --因此上面的set /p清除其值,则set "name="不会更改变量的值。当然,您可以省略该行,并且只要按 Enter ,就会再次使用name的最后输入值。

有很多关于delayed expansion的文章-只需使用search功能即可。