2014-11-23 5 views
0

배치 파일 (tickets.bat)을 가지고 있고 다른 티켓을 만들 때마다 여러 변수를 설정하고 변수를 텍스트 파일에 반향시킴으로써 티켓 번호를 1로 올라갑니다. number.txt 파일을 만들어이 작업을 시도하고 루프를 통과하여 새 티켓을 만들 때마다 %pnumber%을 텍스트 파일로 설정 한 다음 %number%%pnumber%에 1을 더한 값으로 설정합니다. 그러나 %pnumber%은 설정을 계속 유지합니다. number.txt 파일에 숫자 1이 들어 있어도 변경되지 않는 경우에도 0으로 설정됩니다. 내 문제는 내가 뭔가를 누락하지 않는 한 %pnumber%는 항상 0으로 설정한다는처럼변수를 텍스트 파일의 숫자와 동일하게 설정하십시오. 배치

:start 
cls 
echo Enter Ticket Info Here: 
set /p name="Name:" 
echo Press Enter to Show Ticket Preview 
set /a pnumber=C:\Batch\ticket\number.txt 
set /a number=%pnumber%+1 
echo %number% > "C:\Batch\ticket\number.txt" 
echo %name% Ticket Number %number% 
pause 
goto start 

그것은 보이는이 내가 가진 것입니다. 기본적으로 배치 작업을 닫고 다시 열어도 항상 %number%을 1로 늘려야하므로 .txt 파일을 사용했습니다. 텍스트 파일이나 그 밖의 숫자에 숫자가 표시되지 않습니까? 그것은 한 줄에 하나의 숫자입니다. 고맙습니다.

+0

파일이 너무 PNUMBER가 설정되어 있지 않습니다 읽을 수 없습니다. 답안에 set/p 사용을 참조하십시오. 변수를 검사하기 위해 echo를 추가하면 (echo var = % var %)이 같은 문제를 빨리 볼 수 있습니다. 또한, "Press enter ..."메시지 뒤에 일시 중지가 필요합니다. – sjoy

+0

@sjoy 왜 pnumber를 설정하지 않았습니까? 왜/p를/a로 사용합니까? 내가 그랬을 때 당신이 말한대로 잘 작동했는데 왜 그렇게했는지 궁금합니다. 또한 팁에 변수를 검사하는 데 에코를 추가해 주셔서 감사합니다. – TonyStark

+0

두 가지 이유가 pnumber 설정되지 않음 : 파일에 대한 리디렉션이 없지만 set/a가 리디렉션 기호를 수학 연산자로 읽으므로 실패한 경우에도 실패했습니다. @sashaDee가 설명하는대로/a (산술)를 설정합니다. SET에 대한 [here] (http://ss64.com/nt/set.html)을 읽고 사이트에서 "리디렉션"을 검색하십시오. 그런 다음 CMD 명령을 찾습니다. SS64를 즐겨 찾기에 추가하고 문제가 생길 때 먼저 사용하십시오. 좋아. (BTW, 여러 의견에서 동일한 질문이 필요하지 않습니다.) – sjoy

답변

0

는 다음과 같이하십시오 :

@echo Off 
:start 
cls 
echo Enter Ticket Info Here: 
set /p name="Name:" 
echo Press Enter to Show Ticket Preview 
set /p pnumber=<C:\Batch\ticket\number.txt 
set /a number=%pnumber%+1 
echo %number% >C:\Batch\ticket\number.txt 
echo %name% Ticket Number %number% 
pause 
goto start 
+0

정말 고마워요! 그렇다면 왜/p를 설정하지 않고/p를 설정했는지, 그리고 pnumber를 설정할 때 /를 설정하지 않은 이유가 궁금합니다. 다시 한 번 고마워, 완벽하게 일했고 왜 그럴까 궁금해. – TonyStark

+0

'set/a'는 산술 계산을'set/a Result = 3 + 4'로합니다. 파일에서 값을 얻으려면 set/p를 리다이렉션 문자'<'와 함께 파일에 사용할 수 있습니다. – SachaDee

+0

감사합니다. 지금 더 의미가 있습니다. @SachaDee – TonyStark

관련 문제