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

时间:2014-05-12 19:32:48

标签: batch-file

我们有点恐慌,我们不是专家,并且花了一天时间试图找到一行代码来完成我们在BAT文件中所需的代码。

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

我们在Windows XP上进行了此配置,并且使用此行完美运行:

C:\ WINDOWS \ System32 \ rundll32.exe C:\ Windows \ System32 \ shimgbw.dll,ImageView_Fullscreen%~1

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

我们试图:
- 安装XP图像查看器,使用互联网上的一些技巧并修改shimg.dll。没有工作,现在我们的系统32已经搞砸了。
- 安装IrfanView作为替代方案。没工作
- 在行中包含“开始”,或在同一窗口中打开“/ b”,但所有这些并没有真正改变任何东西......我们真的不是专家。

如果您能提供任何帮助或见解,那将是非常棒的。谢谢。

1 个答案:

答案 0 :(得分:0)

这可以通过每个批处理文件杀死前一个文件来实现,从而替换其图像。

如果使用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