2016-09-07 4 views
-1

Я пытался создать небольшой пакетный скрипт, чтобы получить использование вашего браузера. Пока все хорошо работает, оно делает то, что должно. Затем я переместил файл на другой компьютер, и теперь я получаю ошибки «Отсутствующий оператор» eventho, когда программа работает так, как должна. Есть идеи?Отсутствие ошибки оператора с использованием командного файла

@echo off 
set date = %date 
set time = %time 
set sum=0 
for /f "tokens=5 delims=," %%x in ('tasklist /fo csv /fi "imagename eq firefox.exe"') do (
    for /f "tokens=1-5 delims=.K " %%a in ("%%~x") do set /a sum+=%%a%%b%%c%%d 
) 
echo %date%, %time%, firefox.exe, %sum%K > FirefoxDumpResult.csv 
pause 

:start 
set date = %date 
set time = %time 
set sum=0 
for /f "tokens=5 delims=," %%x in ('tasklist /fo csv /fi "imagename eq firefox.exe"') do (
    for /f "tokens=1-5 delims=.K " %%a in ("%%~x") do set /a sum+=%%a%%b%%c%%d 
) 
echo %date%, %time%, firefox.exe, %sum%K >> FirefoxDumpResult.csv 
set choice= 
set /p choice="Do you want to log another one? Press 'y' and enter for Yes: " 
if not '%choice%'=='' set choice=%choice:~0,1% 
if '%choice%'=='y' goto start 
+0

'set date =% date' и' set time =% time' ошибочны (но они фактически не вызывают ошибку, поскольку они бесполезны из-за пункта 2.): 1. пробелы вокруг знака '=' стать неотъемлемой частью имен переменных и значений; 2. Отсутствуют закрывающие '' 'знаки; 3. ** никогда не пытайтесь писать во встроенные переменные! Чтобы получить помощь, вы должны точно описать, что должен делать ваш сценарий и что он на самом деле делает ... подсказка: 'set/A' бросает сообщение об ошибке ... – aschipfl

+0

Я действительно не знаю, что вы пытаетесь чтобы сказать мне в 3. Это один из первых случаев, когда я делаю летучую мышь. Насколько я понимаю, сумма уже существует как переменная, поэтому вы просите меня не делать этого, но даже когда я использую другой var, тогда sum это бросает то же самое. При изучении документации я получаю такие вещи: + = || Добавить переменную || set/a "_num + = 5" Так что я действительно не вижу, что я делаю неправильно, за исключением недостающих "" "Думаю, но даже это не решает. – Akorna

+0

Вы пытаетесь установить' date' и 'time', которые являются встроенными переменными bith, и это то, о чем я говорил. – aschipfl

ответ

1

Вы не поставили символы процента закрытия на свои% DATE% и% TIME%. Кроме того, вы не должны создавать переменные, которые уже существуют и которые не нуждаются в настройке. Вы также бессмысленно повторили раздел своего кода. Наконец, вы не использовали более простой код, который я вам предоставил в более раннем ответе на другой подобный вопрос, используя chrome.exe.

Попробуйте это:

@Echo Off 
If /I Not "%CD%\" Equ "%~dp0" CD /D %~dp0 
>FirefoxDumpResult.csv Type Nul 
:Start 
Set "_sum=0" 
For /F "Tokens=6-7 Delims=., " %%a In (
    'TaskList /NH /FI "ImageName Eq firefox.exe"') Do Set/A _sum+=%%a%%b 
Echo=%DATE%, %TIME%, firefox.exe, %_sum%K>>FirefoxDumpResult.csv 
Echo= 
Echo=Firefox process information logged 
Echo= 
Choice /M "Do you want to log another one?" 
If ErrorLevel 2 Exit/B 
GoTo :Start 

Эти выходы из обоих, и мои версии:

::-------------------------------- Akorna Output ------------------------------- 
Type Nul 1>FirefoxDumpResult.csv 
Set _sum=0 
For /F "Tokens=6-7 Delims=., " %a In ('TaskList /NH /FI "ImageName Eq firefox.exe"') Do Set/A "_sum+=%a%b" 
Set/A "_sum+=414 032K" Missing operator. 
Echo=wo 07/09/2016, 16:39:43,48, firefox.exe, 414K 1>>FirefoxDumpResult.csv 
::------------------------------------------------------------------------------ 
::-------------------------------- Compo Output -------------------------------- 
Type Nul 1>FirefoxDumpResult.csv 
Set "_sum=0" 
For /F "Tokens=6-7 Delims=., " %a In ('TaskList /NH /FI "ImageName Eq firefox.exe"') Do Set/A _sum+=%a%b 
Set/A _sum+=333232 
Echo=09/09/2016, 10:23:22.56, firefox.exe, 333232K 1>>FirefoxDumpResult.csv 
::------------------------------------------------------------------------------ 

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

+0

Это по-прежнему выдаёт ту же ошибку «Missing opperator» tho. И я попробовал и ваш, это был только последний, активный в моей партии txt для тестирования вещей. По какой-то причине все три версии возвращают пропавший оператор. – Akorna

+0

Возможно, это дает отсутствующий оператор, потому что я работаю на виртуальном компьютере? На настольных компьютерах все версии кода работают без указания ошибки «пропавшего оператора». – Akorna

+0

Мое решение должно быть проверено независимо от ваших изменений. Если вы не предоставили весь скрипт, который вы используете, как вы ожидаете, что я определяю, исходит ли ошибка из моего предоставленного решения. Пожалуйста, разместите весь свой сценарий. – Compo

Смежные вопросы