2016-09-07 2 views
-1

브라우저의 사용법을 얻기 위해 약간의 배치 스크립트를 만들려고했습니다. 지금까지는 모든 것이 잘 작동하기 때문에 필요한 일을합니다. 그런 다음 파일을 다른 PC로 옮겼습니다. 이제는 누락 된 운영자 오류가 발생합니다. 프로그램이 실행되는 것처럼 실행됩니다. 어떤 생각이야?배치 파일을 사용하여 연산자 오류가 누락되었습니다.

@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를 사용하는 경우에도 같은 것을 던진다. 문서를 살펴보면 다음과 같은 정보를 얻을 수 있습니다. + = || 변수 추가 || set/a "_num + = 5" 누락 된 부분을 제외하고 내가 잘못하고있는 것을 실제로 볼 수는 없지만 그게 해결되지는 않습니다. – Akorna

+0

'date'를 설정하려고합니다. 와'time'은 bith built-in 변수로, 내가 말한 것입니다. – 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 
::------------------------------------------------------------------------------ 

; 적어도 사용중인 스크립트의 5 행이 내가 게시 한 행과 일치하는지 확인하십시오.

+0

이것은 여전히 ​​"Missing opperator"오류를 나타냅니다. 그리고 당신도 시도해 보았습니다.이 테스트는 일을 테스트하기 위해 txt 배치에서 마지막으로 활동 한 것입니다. 세 가지 버전 모두 어떤 이유로 opperator가 누락되었습니다. – Akorna

+0

가상 PC에서 작업 중이므로 누락 된 opperator를 제공 할 수 있습니까? 데스크톱 PC에서는 "누락 된 opperator"오류없이 모든 코드 버전이 작동합니다. – Akorna

+0

내 솔루션은 변경 사항과 독립적으로 테스트해야합니다. 실행중인 전체 스크립트를 제공하지 않으면 제공된 솔루션에서 오류가 발생하는지 어떻게 확인할 수 있습니까? 전체 스크립트를 게시하십시오. – Compo

관련 문제