.bat 文件随机打开文件夹中 1-5 个文件

.bat 文件随机打开文件夹中 1-5 个文件

我需要一个在窗口中运行的脚本来监视我的文件夹。当我将 jpg 文件放入此文件夹中时,在窗口中运行的脚本应该

  • 使用 photoshop droplet (.exe) 打开该 jpg 文件,
  • 等待一会儿,
  • 运行再次检查.jpg 文件。

我现在拥有的脚本可以运行,但我需要修改它。

我想要窗口打开带有随机液滴我创建的:可能是 5 个 droplet,假设我有 5 个 droplet,即 1.exe、2.exe、3.exe、4.exe、5.exe,而不仅仅是 123.exe droplet(此脚本)。我该怎么做?

@echo off
:loop
if exist "C:\Users\Administrator\Desktop\converted\*.jpg" (
for %%a in ("C:\Users\Administrator\Desktop\converted\*.jpg") do (
start "" /w "C:\Users\Administrator\Desktop\123.exe" "%%a"
ping -n 20 localhost >nul
del "%%a"
)
)
ping -n 60 localhost >nul
goto :loop

2015 年 5 月 27 日编辑 更改脚本后,我尝试将您的脚本移到“for 循环”之前,它可以工作,但它在输出中保持相同的值,而不是随机输出到每个循环,请参阅我的脚本

@echo off

:loop
set /a n=%random% %%5+1  (  <-- I move your line to this)
if exist "C:\Users\Administrator\Desktop\converted\*.jpg" (
for %%b in ("C:\Users\Administrator\Desktop\converted\*.jpg") do (
start "" /w "C:\Users\Administrator\Desktop\%n%.exe" "%%b"
ping -n 20 localhost >nul
del "%%b"
)
)
ping -n 60 localhost >nul
goto :loop

答案1

您可以使用 %random% 来执行此操作。 set /a n=%random%%6+1将生成一个介于 1 和 5 之间的随机数。

%random% % 6 生成一个介于 0 和 5 之间的数字,因此 %random% % 6 + 1 生成一个介于 1 和 6 之间的数字。

文件:https://stackoverflow.com/questions/5777400/how-to-use-random-in-batch-script

编辑:我还不能发表评论,因此下面是实现方法:

@echo off
:loop
if exist "C:\Users\Administrator\Desktop\converted\*.jpg" (
for %%a in ("C:\Users\Administrator\Desktop\converted\*.jpg") do (
set /a n=%random%%6+1
start "" /w "C:\Users\Administrator\Desktop\%n%.exe" "%%a"
ping -n 20 localhost >nul
del "%%a"
)
)
ping -n 60 localhost >nul
goto :loop

其实就是set /a n=...定义一个新的变量“n”,输入%n%就可以使用它。

答案2

我找到了解决方案,感谢 dano 让我思考如何做到这一点,在我搜索完如何在 for 循环中使用它之后,我终于得到了答案,我必须使用 ! 而不是 % 并使用“SETLOCAL ENABLEDELAYEDEXPANSION”

非常感谢

@echo off

:loop
SETLOCAL ENABLEDELAYEDEXPANSION
if exist "C:\Users\Administrator\Desktop\converted\*.jpg" (
for %%b in ("C:\Users\Administrator\Desktop\converted\*.jpg") do (
set /a n=!random! %%5+1 
start "" /w "C:\Users\Administrator\Desktop\!n!.exe" "%%b"
ping -n 20 localhost >nul
del "%%b"
)
)
ping -n 60 localhost >nul
goto :loop

相关内容