Я новичок и никогда в своей жизни не писал кодов и не писал сценарии, и я пытаюсь создать командный файл, который будет ...

  • проверьте, работает ли itunes
  • если он запущен, откройте файл VBS для моего плейлиста
  • если он не запущен, откройте itunes
  • подождите 30 секунд
  • перепроверить снова, пока он не сможет запустить VBS
  • тогда прекратите проверку

Я планирую поместить это в папку автозагрузки, чтобы, когда я открою свой компьютер, он начал проигрывать музыку с самого начала ...

Но, не имея никакого опыта в программировании, я в основном смог найти в Google решения других людей и попробовать их вслепую в надежде, что они работают ...

пока я нашел и попробовал

@echo off

PATH=C:\Program Files\iTunes\iTunes.exe

iTunes.EXE YourProgram.exe >nul

if ERRORLEVEL 1 goto Process_NotFound

:Process_Found

echo iTunes is running

goto END

:Process_NotFound

echo iTunes is not running

Itunes.exe

goto END

:END

-

@echo off      
tasklist /FI "IMAGENAME eq iTunes.exe" | find /i "iTunes.exe"      

IF ERRORLEVEL 2 GOTO LOOP2
IF ERRORLEVEL 1 GOTO LOOP1 

:LOOP1 
  start notepad.exe
goto EXIT     

:LOOP1 
  start iTunes.exe 
goto EXIT 

:EXIT

А также

tasklist /FI "IMAGENAME eq iTunes.exe" /FO CSV > search.log

FOR /F %%A IN (search.log) DO IF %%~zA EQU 0 GOTO end

start iTunes.exe

:end

Когда я тестирую их, первая летучая мышь вообще ничего не делает, вторая просто открывает пустой блокнот, работает ли iTunes, а третья сохраняет текстовый файл на моем рабочем столе с именем "search" и в зависимости от того, запущен ли iTunes или нет. не это меняет то, что имеет поиск внутри.

INFO: No tasks are running which match the specified criteria.
  • Если iTunes выключен

А также

"Image Name","PID","Session Name","Session#","Mem Usage"
"iTunes.exe","7208","Console","1","105,512 K"
  • Если iTunes работает

Кажется, этот последний самый близкий к тому, что мне нужно, но я до сих пор не знаю, как это изменить и изменить на то, что мне нужно.

Можете ли вы, ребята, помочь мне здесь?

3 ответа3

0

Ваш второй код

@echo off      
tasklist /FI "IMAGENAME eq iTunes.exe" | find /i "iTunes.exe"      
IF ERRORLEVEL 2 GOTO LOOP2
IF ERRORLEVEL 1 GOTO LOOP1 
:LOOP1 
start notepad.exe
goto EXIT     
:LOOP1 
start iTunes.exe 
goto EXIT 
:EXIT

У вас есть два:LOOP1, так что вы всегда получите первый, чтобы запустить notepad.exe. Нет:LOOP2 для него, чтобы перейти к нему, поэтому, когда он читает "GOTO LOOP2", он не найдет его и не продолжит вниз, затем он найдет LOOP1, запустит блокнот и перейдет к EXIT.

@echo off      
tasklist /FI "IMAGENAME eq iTunes.exe" | find /i "iTunes.exe"      
IF ERRORLEVEL 2 GOTO LOOP2
IF ERRORLEVEL 1 GOTO LOOP1 
:LOOP2
start notepad.exe
goto EXIT     
:LOOP1 
start iTunes.exe 
goto EXIT 
:EXIT

Ваш третий код с

tasklist /FI "IMAGENAME eq iTunes.exe" /FO CSV > search.log

the /FO CSV> search.log

предназначен для [File-Output] [CSV] [сохранен в] [search.log]

Я использовал [], чтобы показать каждый синтаксис и что он делает.

0

Второй предоставленный образец действительно идет в правильном направлении. Хотя есть пара ошибок, которые я нашел.

  • Вы записали LOOP1 дважды, вместо LOOP1, а затем LOOP2. Попробуйте использовать больше уникальных имен, чтобы избежать этого.
  • findstr возвращает уровень ошибки 0, когда строка найдена, уровень ошибки 1, если нет. Вы можете проверить это, используя ECHO% errorlevel% в вашем пакетном файле.

Надеемся, что следующий пример поможет вам расширить это.

tasklist.exe | findstr "iTunes.exe"

IF ERRORLEVEL 1 GOTO NOTFOUND
IF ERRORLEVEL 0 GOTO RUNNING

:RUNNING
ECHO "Application is running, replace this line with the code you want"  
GOTO END

:NOTFOUND
ECHO "Application not found, replace this line with the code you want"
GOTO END

:END
0

Попробуйте простой пакетный скрипт, как показано ниже. Я не уверен, каков ваш VB-скрипт, но если вы покажете мне логику, я добавлю в этот скрипт, чтобы его можно было запустить с помощью пакетного скрипта. , ,

Это должно сделать именно то, что вы перечислили, но уточнить для меня материал сценария VB, и я добавлю это; звучит довольно просто. , ,

1. Проверьте, работает ли iTunes в памяти (если работает, тогда сделайте # 3)

2. Запустите iTunes, если он не работает, затем подождите 30 секунд и проверьте, что он снова работает в памяти

3. Убедитесь, что iTunes работает в памяти, и если это так, перейдите к процедуре VB Script, чтобы запустить ее для своего плейлиста и т.д., А затем завершите сценарий.

@ECHO OFF

:CheckiTunesRunning
TASKLIST | FINDSTR /I "iTunes.exe"
IF ERRORLEVEL 1 (GOTO StartiTunes) ELSE (GOTO OpenPlayList)

:StartiTunes
START "iTunes" "C:\Program Files\iTunes\iTunes.exe"
::: 30 second pause
PING -n 30 127.0.0.1 > nul
GOTO CheckiTunesRunning

:OpenPlayList
<Open PlayList Logic VB, etc.>
GOTO EOF

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