Member 13985992 Ответов: 1

Я нашел часть этого кода в интернете (часть VBS, и я не знаю, что делать с этой ошибкой


Я нашел кое-что из этого кода:
@echo off
:top
SET /A RAND=%RANDOM% %%6
if %RAND%==1 set "file="%windir%\WinSxS\amd64_microsoft-windows-shell-sounds_31bf3856ad364e35_10.0.17134.1_none_fc93088a1eb3fd11\Windows Exclamation.wav""
if %RAND%==2 set "file="%windir%\WinSxS\amd64_microsoft-windows-shell-sounds_31bf3856ad364e35_10.0.17134.1_none_fc93088a1eb3fd11\tada.wav""
if %RAND%==3 set "file="%windir%\WinSxS\amd64_microsoft-windows-shell-sounds_31bf3856ad364e35_10.0.17134.1_none_fc93088a1eb3fd11\Windows Critical Stop.wav""
if %RAND%==4 set "file="%windir%\WinSxS\amd64_microsoft-windows-shell-sounds_31bf3856ad364e35_10.0.17134.1_none_fc93088a1eb3fd11\Windows Error.wav""
if %RAND%==5 set "file="%windir%\WinSxS\amd64_microsoft-windows-shell-sounds_31bf3856ad364e35_10.0.17134.1_none_fc93088a1eb3fd11\Windows Background.wav""
( echo Set Sound = CreateObject("WMPlayer.OCX.7"^) <------
  echo Sound.URL = "%file%" <------
  echo Sound.Controls.play <-----
  echo do while Sound.currentmedia.duration = 0 <-----
  echo wscript.sleep 100 <-----
  echo loop <-----
  echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000) >sound.vbs <-----
start /min sound.vbs <-----
ping localhost -n 1 >NUL
goto top
:End

Биты со стрелками-это то, в чем я не уверен.
Вот в чем моя ошибка.Вот такая картинка[^]

Что я уже пробовал:

Что ж... Ничего.. Я не знаю, что делать.

1 Ответов

Рейтинг:
9

Dave Kreskowiak

Ваш пакетный файл DOS создает файл .VBS и помещает в него немного кода. Опубликуйте содержимое этого файла sound.vbs. У меня такое чувство, что часть пакетного файла написана неправильно, и она помещает в него мусорный код .Файл VBS.


Member 13985992

Часть партии-это тот бит, который я сделал... Но он сказал из моих знаний, что этот бит:
echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000) >sound.vbs
        ^
он думал, что это должен быть конец заявления, так что просто echo wscript.sleep

Dave Kreskowiak

Еще раз посмотрите в sound.vbs и опубликуйте это здесь. Нажмите на зеленую ссылку "улучшить вопрос", чтобы вернуться в Редактор и добавить код.

Я готов поспорить, что вы думаете, что в этом файле не то, что вы ожидаете.

Dave Kreskowiak

На картинке, на которую вы ссылаетесь, он жалуется на строку 2.

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

Member 13985992

это был пост переполнения стека: https://stackoverflow.com/questions/23313709/play-invisible-music-with-batch-file
вот что они дали человеку:
@echo off
набор "файл=track12.МР3"
( echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
эхолот.URL = "%file%"
эхолот.Контроля.играть
Эхо делать, пока звук.currentmedia.Продолжительность = 0
Эхо объект WScript.спать 100
Эхо-петля
echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000) >sound.vbs
начало /мин звука.vbs

Dave Kreskowiak

Ладно, он жалуется на линию, где вы устанавливаете звук.свойство url. Если ваш путь к файлу, установленный выше в вашем пакетном файле, имеет один набор кавычек вокруг него, это не сработает. Чтобы поместить кавычки в строку в VBScript требуется строка кода, которая будет выглядеть следующим образом:

    String path = """C:\Program Files\Something"""

Две кавычки экранируются в одну кавычку в результирующей строке. В итоге вы получаете строку (с кавычками), подобную этой:
    "C:\Program Files\Something"


Чтобы получить тот же эффект в вашем пакетном файле, звук.Строка URL должна выглядеть так:
    echo Sound.URL = ""%file%""

Member 13985992

ОК. Я запустил код, но..... Что-то еще сломалось.
Он отлично воспроизводил звук, как я и хотел, но теперь он воспроизводит один и тот же звук только один раз. Я повторил %RAND% var, и он действительно придумывает случайные числа, но также после этого он говорит "Доступ запрещен". Никогда не получай никакого взгляда с этой штукой типа "а"... =-( (Я пробовал работать от имени администратора, но безуспешно.)

Dave Kreskowiak

Вы действительно не делаете никаких тестов, чтобы узнать, как работает этот код.

Линия SET /A в верхней части будет генерировать 6 значений: 0, 1, 2, 3, 4, и 5. Что происходит в коде вашего пакетного файла, если установлено значение 0?

Кроме того, почему вы используете пакетный файл для этого? Просто напишите код в VBScript и покончите с этим.

Member 13985992

Поскольку я не могу использовать vbscript, это мой злейший враг.
Но почему он воспроизводит тот же звук и говорит, что acsess отрицается? Кстати, у вас есть эта папка?

Dave Kreskowiak

Он говорит, что доступ запрещен, вероятно, потому, что файл все еще заблокирован с предыдущего воспроизведения, которое еще не сделано.

Странно, что вы говорите, что VBScript-ваш злейший враг, но именно пакетный файл вызывает все ваши проблемы.