Выполнить два разных файла с командным файлом

645
XL909

Мои усилия

Я занимаюсь этим около 3 часов, играя с комбинациями виртуальных рабочих столов с Rainmeter, и я совершенно новичок в логике сценариев. У меня проблемы с выяснением, как заставить его делать то, что мне нужно.

Я имею

Итак, у меня есть мой первый рабочий стол под названием «MAIN», второй «AUDIO» и последний «GAMES».
ГЛАВНАЯ не использует Rainmeter, а оба других используют два разных макета Rainmeter.

Чтобы переключаться между рабочими столами и запускать другую прогу, я использую программу из третьей части под названием «Windows 10 Virtual Desktops Enhancer» в сочетании с AutoHotKey (только для упрощения работы)

Enhancer делает разные вещи с помощью файла .ini (изменяет имена рабочих столов, обои, запускает определенные программы ...)

Вот интересная часть файла .ini

[RunProgramWhenSwitchingToDesktop] 1=D:\Downloads\win-10-virtual-desktop-enhancer-master\commands\taskkill_rainmeter.bat 2=D:\Downloads\win-10-virtual-desktop-enhancer-master\commands\load_audio_layout.bat 3=D:\Downloads\win-10-virtual-desktop-enhancer-master\commands\load_games_layout.bat 

Как видите, 1, 2 и 3 представляют каждый рабочий стол, и после того, как путь ТОЛЬКО ОДИН ПРОГ, как было ограничено, я создал пакетные файлы для запуска нескольких программ одновременно. Когда я включаю рабочий стол

  1. это убивает все задачи Rainmeter
  2. он работает аудио макет Rainmeter
  3. он запускает игровой макет Rainmeter

Моя проблема касается пакетных файлов рабочего стола 2 и 3 (кажется, 3 работает)

Вот партия рабочего стола 2

@echo off  "C:\Program Files\Rainmeter\Rainmeter.exe" !LoadLayout "Audio Desktop Layout"  dir && echo off  D:\Downloads\win-10-virtual-desktop-enhancer-master\msgbox\msgboxAUDIO.vbs 

Первая часть заключается в запуске Rainmeter, а вторая - в появлении всплывающего окна с сообщением «хорошо, что оно включено» (в первый раз команда сообщения была непосредственно в командном файле, но она не работала)

Когда я включаю рабочий стол 2 или 3, он открывает Rainmeter + пустой неиспользуемый cmd, затем не появляется всплывающее сообщение, но для пакета taskkill он корректно убивает Rainmeter, затем показывает всплывающее окно, иногда всплывающее окно показывает, но Rainmeter нет, поведение меняется но оба никогда не запускаются одновременно, иногда всплывающие окна показываются, когда я возвращаюсь на первый рабочий стол, иногда это работает, но cmdпоявляется другой пробел (один я не могу taskkill), а для рабочего стола GAMES он просто работает с точно таким же кодом линий, чем на рабочем столе 2

Вот настольный 1 пакет

@echo off  taskkill /IM rainmeter.exe /F  dir && echo off  D:\Downloads\win-10-virtual-desktop-enhancer-master\msgbox\msgboxRAINCLOSED.vbs 

И я не понимаю, почему один работает, а другие нет. Я пробовал разные команды разделения (&, &&, dir & echo off, dir && echo off), но никто не может выполнить обе команды одновременно.

3 рабочих стола, когда я запускаю энхансер

Я надеюсь, что все это всеобъемлющее, и спасибо за любую помощь, которую вы можете предоставить: D

0
Лол. Без обид, но это не очень «понятно». Чего вы пытаетесь достичь с помощью «dir && echo off»? Что бы это ни было, оно фактически ничего не делает. Затем, когда вы запускаете программу непосредственно внутри пакетного файла, пакетный файл останавливает выполнение до тех пор, пока эта программа не закроется. Если вы не хотите ждать завершения программы, вам нужно добавить команду к `start`. то есть `start“ c: \ program files \ rainmeter \ rainmeter.exe ”`. Я действительно не понимаю, что вы пытаетесь достичь, но я предполагаю, что это объясняет, почему вы испытываете то, что вы описываете. Appleoddity 6 лет назад 1
Спасибо за ваш ответ, я постараюсь прояснить это, я просто пытаюсь сделать так, чтобы рабочие столы переключались немного «персонализированно», и чтобы научить меня некоторым вещам в области кодирования, точная вещь, которую я хочу сделать, - запустить в в этом случае, к файлам, Rainmeter, затем всплывающее окно (сейчас, позже, я бы запустил Steam или Discord, переключившись на рабочий стол GAMES) XL909 6 лет назад 0
Что касается "dir && echo off", я нашел его где-то, где было указано, что это выполнение команды после выполнения предыдущего, я нашел эквивалентный "command1 && command2", но он не работает, я попробую с команда запуска, но я не понимаю, почему это работает на одном, а на другом нет XL909 6 лет назад 0
Он работает на одном, а не на другом, потому что порядок команд отличается. Как я уже говорил, если вы не используете `start`, все выполнение командного файла останавливается до тех пор, пока не будет завершена запущенная вами программа. Единственный способ продолжить выполнение и запустить вторую программу - это добавить в первую программу `start`, чтобы командный файл не ждал завершения команды. Appleoddity 6 лет назад 0
Странно, но оба пакета одинаковы (только целевой макет и изменения .vsb). Команда запуска не работает, она больше не может загружать макет, возможно, проблема с запятой, похоже, это запустите "C: \ Program Files \ Rainmeter \ Rainmeter.exe"! LoadLayout "Расположение аудио рабочего стола" XL909 6 лет назад 0
Они на самом деле не одинаковы. Пакетное выполнение каждой команды выполняется последовательно, ожидая возврата каждой команды, если не указано, что команда должна быть выполнена последовательно или в другом потоке, например с помощью команды запуска. Тот, у которого есть taskkill, продолжает выполнение taskkill, так как rainmeter.exe убит, поэтому можно запустить следующую команду. rainmeter.exe запускается другими пакетными файлами, поэтому он ожидает выхода rainmeter, прежде чем продолжить. Измените строки, в которых вы запускаете rainmeter, следующим образом: `start" "" C: \ Program Files \ Rainmeter \ Rainmeter.exe "! LoadLayout" Audio Desktop Layout "` shawn 5 лет назад 0
`start` является привередливым - вы должны включать пустые кавычки перед остальной частью команды, чтобы гарантировать, что команда не рассматривается как аргумент` title`. shawn 5 лет назад 0

0 ответов на вопрос