.bat arquivo aberto aleatório para arquivo 1-5 na pasta

0

Eu preciso de um script para ser executado em uma janela para monitorar minha pasta. Quando coloco um arquivo jpg nessa pasta, o script em execução na janela deve

  • abra esse arquivo jpg com o droplet do photoshop (.exe),
  • espere um pouco e
  • execute para verificar os arquivos .jpg novamente.

O script que tenho agora funciona, mas preciso modificá-lo.

Eu quero que a janela abra o arquivo jpg com um droplet aleatório que eu criei: pode ser 5 gotículas, digamos que eu tenha 5 gotículas 1.exe, 2.exe, 3.exe , 4.exe, 5.exe em vez de apenas 123 droplet (este script). Como faço isso?

@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\Desktop3.exe" "%%a"
ping -n 20 localhost >nul
del "%%a"
)
)
ping -n 60 localhost >nul
goto :loop

Editado em 27 de maio de 2015 Depois de alterar o script eu tento mover o seu script antes de "loop for" é o trabalho, mas é manter o mesmo valor na saída, não aleatório para cada loop, por favor, veja o meu script

@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
    
por iamway 26.05.2015 / 11:51

2 respostas

2

Você pode usar% random% para realizar isso. set /a n=%random%%6+1 gerará um número aleatório entre 1 e 5.

% aleatório%% 6 gera um número entre 0 e 5, então% aleatório%% 6 + 1 gera um número entre 1 e 6.

Doc: link

EDITAR : não posso comentar ainda, então aqui está como implementar isso:

@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

Na verdade, set /a n=... define uma nova variável "n". Você pode usá-lo digitando% n%.

    
por 26.05.2015 / 11:59
0

achei a solução, graças dano me deixar pensar em como fazer isso Depois que eu fiz uma pesquisa sobre como usá-lo em loop, finalmente consegui a resposta que tenho que usar! em vez de% e use "SETLOCAL ENABLEDELAYEDEXPANSION" também

Muitos agradecimentos

@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
    
por 27.05.2015 / 09:10