Batch file .Bat行,用于在同一图像查看器窗口中打开图片

Batch file .Bat行,用于在同一图像查看器窗口中打开图片,batch-file,Batch File,我们有点惊慌失措,我们不是专家,花了一整天的时间试图找到一行代码来完成我们在BAT文件中需要的工作 基本上,我们有Windows 7,我们希望在运行.bat文件时使用它: -图像将在图像查看器中打开 -(在幻灯片模式下) -每次运行BAT时,新图像将替换幻灯片中的旧图像 我们在Windows XP上有此配置,它可以完美地工作,如下所示: C:\WINDOWS\System32\rundll32.exe C:\WINDOWS\System32\shimgbw.dll,ImageView\u全屏显示

我们有点惊慌失措,我们不是专家,花了一整天的时间试图找到一行代码来完成我们在BAT文件中需要的工作

基本上,我们有Windows 7,我们希望在运行.bat文件时使用它:
-图像将在图像查看器中打开
-(在幻灯片模式下)
-每次运行BAT时,新图像将替换幻灯片中的旧图像

我们在Windows XP上有此配置,它可以完美地工作,如下所示:

C:\WINDOWS\System32\rundll32.exe C:\WINDOWS\System32\shimgbw.dll,ImageView\u全屏显示%%1

但是,在Windows 7中,无法使其正常工作。
-幻灯片无法打开。
-下一个图像将在新的图像查看器窗口中打开

我们已尝试:
-使用internet上的一些技巧和修改shimg.dll安装XP image viewer。没有工作,现在我们的系统32相当混乱。
-安装IrfanView作为替代方案。不起作用
-在行中包含“开始”,或在同一窗口中打开“/b”,但所有这些都没有真正改变任何事情。。。我们真的不是专家


如果你能提供任何帮助或见解,那就太棒了。谢谢。

这可以通过每个批处理文件删除前一个批处理文件并替换其映像来实现

如果使用START命令启动映像并给出任务名称;批处理文件启动时,应使用TASKKILL按名称删除上一个查看器,然后启动另一个查看器

您使用什么程序来显示图像取决于您

我使用了一些批处理子例程,可以用于此目的,并附加了它们

将该程序名放入serverbinary:

SET serverbinary=the.exe
CALL :GetPID ServerPID %servername% "%USERNAME% %serverbinary%"
CALL :KillPID %ServerPID%
START "%USERNAME% %serverbinary%"  "%serverbinary%" %~1 < nul
EXIT /b

:: ------------------------------------------------------------------
:WaitForTask
::
:: Usage: Windowname imagename
:: Wait for a task to finish before continuing
::
set commentsPID=
CALL :GetPID commentsPID %1 %2
REM "%commentsPID%."
IF "%commentsPID%." == "." EXIT /b
echo Waiting for PID %commentsPID% %1 %2 
CALL :Sleep 30
GOTO :WaitForTask

:: ===========================================================================
:GetPID
::  usage: PIDvar imagename windowname 
:: Get the PID of a task
SETLOCAL EnableDelayedExpansion
set _SubArg=
for /f "skip=3 tokens=1,2*" %%a in ('tasklist /fi "imagename eq %~2" /fi "windowtitle eq %~3"  2^>nul ') do @set _SubArg=%%b 
)
( ENDLOCAL
   set %1=%_SubArg%
)
EXIT /B 0

:: ===========================================================================
:KillPID
:: usage: PID
SETLOCAL EnableDelayedExpansion
if NOT %1. == . taskkill /F /T /PID %1 > nul 2>nul
ENDLOCAL
EXIT /B 0
SET serverbinary=the.exe
调用:GetPID ServerPID%servername%%%USERNAME%%serverbinary%
调用:KillPID%ServerPID%
启动“%USERNAME%%serverbinary%”“%serverbinary%”%~1nul')中的/f“skip=3 tokens=1,2*”%%a,do@set\u subrag=%%b
)
(完)
设置%1=%\u子组%
)
退出/b0
:: ===========================================================================
:KillPID
::用法:PID
SETLOCAL EnableDelayedExpansion
如果不是%1.==。任务终止/F/T/PID%1>nul 2>nul
端部
退出/b0