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


0

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

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

我现在使用的脚本,但我需要修改它。

我希望窗口打开jpg文件 随机滴 我创建的:它可能是5个水滴让我说我有5个小滴是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

Answers:


2

您可以使用%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%来使用它。


对我来说不起作用,看起来像命令没有价值,窗口一直警告我“Windows无法找到'C:\ Users \ Administrator \ Desktop \ .exe'。确保你正确输入了名字,然后再试一次。
iamway

如果在start命令之前回显值,该怎么办?像这样:echo%n%
Dano

回声后什么都没发生?为什么,我的电脑出了什么问题?
iamway

我的错。你必须写2%的符号:set / a n =%random %%% 6 + 1
Dano

@Dano:也纠正您的批处理文件并加倍%符号。
Karan

0

我找到了解决方案,感谢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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.