.bat файл случайный открытый файл для 1-5 файла в папке

0

Мне нужен скрипт для запуска в окне для мониторинга моей папки. Когда я помещаю файл jpg в эту папку, скрипт, работающий в окне, должен

  • откройте этот файл jpg с помощью фотошопа (.exe),
  • подожди немного и
  • запустить, чтобы проверить файлы .jpg снова.

У меня сейчас работает скрипт, но мне нужно его изменить.

Я хочу, чтобы окно открыло файл jpg со случайной каплей, которую я создал: это может быть 5 капель, скажем, у меня есть 5 капель, а это 1.exe, 2.exe, 3.exe, 4.exe, 5.exe вместо просто капелька 123.exe (этот скрипт). Как мне это сделать?

@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

Отредактировано 27 мая 2015 г. После изменения скрипта я пытаюсь переместить ваш скрипт до того, как "for loop" он работает, но он сохраняет одно и то же значение в выводе, не случайно для каждого цикла, смотрите мой скрипт

@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
iamway
источник

Ответы:

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
Что если вы отобразите значение непосредственно перед командой запуска? Как это: эхо% n%
Дано
замечать что происходит после эха? почему что-то не так с моим компьютером?
Iamway
Виноват. Вы должны написать 2-процентные знаки: set / an =% random% %% 6 + 1
Dano
@Dano: исправьте свой пакетный файл и удвойте знак%.
Каран
0

Я нашел решение, спасибо, Дано, что позволил мне подумать, как это сделать, после того, как я искал, как использовать его в цикле 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
iamway
источник