Мне нужен скрипт для запуска в окне для мониторинга моей папки. Когда я помещаю файл 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

2 ответа2

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%.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .