2016-01-23 77 views
-1

嘿我决定尝试在我的电脑上制作账单/发票注册系统,因为我简直就是这样一个笨拙的混乱头脑,每次我收到一张账单,如果我没有付账单,瞬间(因为我很忙)我会忘记我的账单放在哪里。账单/发票注册系统

所以我正在制作这个程序,它会告诉我所有需要的信息,如果我忘记原始纸张的位置。
脚本本身工作正常。但我正在努力的部分是:

当我注册账单的所有细节时,它会在程序所在的用户名文件夹内创建一个文件夹,其中包含我支付账单的实例的名称。

然后在该文件夹内,它会创建一个包含所有信息的文本文件。如果我决定用不同的实例注册另一个账单。那么同样的事情又会发生。

但是,当它将使目录变为带有文件的实例名称时出现错误。

有时会出现在主程序文件夹中,而不是用户文件夹。有时它出现在文件夹中,因为它应该...

但现在它不会创建txt的所有...我想我搞砸了代码的地方,但我不知道我在哪里搞砸了,所以我希望有人会看一下剧本。我只是不知道错误来自哪里:P

@echo off 
title Bill Registration.   V1.0- Computer-ID: %USERNAME%% 
goto registercheck 
:main 
cls 
echo. 
echo. 
echo. 
echo. 
echo. 
echo          User: %usrn% 
echo         =========================== 
echo         Bill register/database Menu 
echo         =========================== 
echo         ^| 1. -Register a bill ^| 
echo         ^| 2. -Check Bill Info ^| 
echo         ^| 3. -Edit bill   ^| 
echo         ___________________________ 
set /P Q=".         Console: " 
IF %Q%==1 goto billreg 
IF %Q%==2 goto checkbill 
IF %Q%==3 goto editbill 
IF "%Q%"=="" call invalid 
echo. 
echo. 
echo. 
echo. 

:registercheck 
cls 
set usrn= 
echo. 
echo. 
echo. 
echo. 
echo          User: Not logged in 
echo         =========================== 
echo           User Check 
echo         =========================== 
echo         ^| Type Your username ^| 
echo         ^| to check if it is ^| 
echo         ^| Existing    ^| 
echo         ___________________________ 
set /P usrn=".         Username:" 
if exist C:\Users\%USERNAME%\Documents\billregister\%usrn% goto login 
if not exist C:\Users\%USERNAME%\Documents\billregister\%usrn% goto userreg 
goto main 
:invalid 
:login 
cls 
echo Please log in to your account! 
set usr= 
set /p usr=Username: 
if {%usr%}=={} goto :login 
set authenticated= 
for /f "tokens=*" %%a in (C:\Users\%USERNAME%\Documents\billregister\%usrn%\usrn.dll) do (
    if {%%a}=={%usr%} set authenticated=true 
) 

if not defined authenticated (echo Invalid Username & goto :login) 

:passwo 
set pass= 
set /p pass=Enter your password: 
if {%pass%}=={} goto :login 
set authenticated= 
for /f "tokens=*" %%a in (C:\Users\%USERNAME%\Documents\billregister\%usrn%\usrnp.dll) do (
    if {%%a}=={%pass%} set authenticated=true 
) 
if not defined authenticated (echo Invalid password & goto :login) 
:loggedin 
goto main 


:userreg 
cls 
echo         =========================== 
echo           Please Register 
echo         =========================== 
Set usrname= 
set /p usrname=".         Username:" 
Set passw= 
set /p passw=".         Password:" 
MKDIR C:\Users\%USERNAME%\Documents\billregister\%usrname%\ 
echo %usrname%> C:\Users\%USERNAME%\Documents\billregister\%usrname%\usrn.dll 
echo %passw%> C:\Users\%USERNAME%\Documents\billregister\%usrname%\usrnp.dll 
goto login 

:retrievebill 
:checkbill 
:billreg 
cls 
echo          User: %usrn% 
echo         =========================== 
echo           Bill register form 
echo         =========================== 
echo         ^| Fill out the form ^| 
echo         ^| In order to register ^| 
echo         ^| Your bills   ^| 
echo         ___________________________ 
set orgname= 
set /p orgname=".         Payment to(name):"       
set orgacc= 
set /p orgacc=".         Payment to account:" 
set faknr= 
set /P Faknr=".         FAKTURA-Number:" 
set efakref= 
set /p efakref=".         E-Faktura Ref:" 
set totpay= 
set /p totpay=".         Total ammount to pay:" 
set duetodate= 
set /p duetodate=".         Due to date:" 
set kidnr= 
set /p kidnr=".         KID-Number:" 
set payfor= 
set /p payfor="Write a short describtion of what you pay for:" 
if exist cd/ C:\Users\%USERNAME%\Documents\billregister\%usrname%\bills\%orgname% goto writebill 
if not exist cd/ exist C:\Users\%USERNAME%\Documents\billregister\%usrname%\bills\%orgname% goto makedirectory 
:makedirectory 
MKDIR C:\Users\%USERNAME%\Documents\billregister\%usrn%\bills\%orgname%\goto writebill 


:writebill 
(
    echo          E-Faktura Referance: %efakref% 
    echo          KID-Number: %kidnr% 
    echo         ================================================================= 
    echo          Bill from: %orgname%    Faktura number: %faknr% 
    echo         =================================================================       
    echo         pay-to Account number: %orgacc% 
    echo. 
    echo         Due to date: %duetodate% 
    echo. 
    echo         Describtion of what you pay for: 
    echo         ________________________________________________________________ 
    echo         %payfor% 
    echo         ================================================================ 
    echo         Total Ammount to pay: %totpay% -NOK 
    ) > C:\Users\%USERNAME%\Documents\billregister\%usrname%\bills\%orgname%\bill_%orgname%_faktura%faknr%.txt 
Pause>nul 

goto registeredbill 
:registeredbill 
cls 
echo The bill is now saved 
pause>Nul 
goto billreg 







:editbill 
+0

神圣的文字障碍。所有这一切都在两条线上。 。 。 – Bloodied

+0

编辑。将文本缩短了一小段,并将其分段。更好? –

+0

在你的':makedirectory'标签中,你有一个'goto:label'命令连接到没有引号的目录,没有'&'分隔符。 – Bloodied

回答

0

那么这是一个尝试。我无法理解你的登录方法,所以我只是绕过它。我获得了成功的回报。

我无法得到“检查您的账单信息”选项的工作。我认为我有一个简单的解决方法,但没有用于修复可能不会被破坏的东西。

@echo on 
rem Is the second % in the title a mistake? 
rem also replaced [goto label] with [goto :label] because...reasons, 
rem and quotes have been added to soothe my habit. 

rem Also had to replace all instances of [usrn] with [usrname], 
rem because flip flopping meant one could be left blank, thus ruining 
rem a path directory. 


title Bill Registration.   V1.0- Computer-ID: %USERNAME%% 

goto :registercheck 

:main 
cls 
echo. 
echo. 
echo. 
echo. 
echo. 
echo          User: %usrname% 
echo         =========================== 
echo         Bill register/database Menu 
echo         =========================== 
echo         ^| 1. -Register a bill ^| 
echo         ^| 2. -Check Bill Info ^| 
echo         ^| 3. -Edit bill   ^| 
echo         ___________________________ 
set /P Q=".         Console: " 
IF %Q%==1 goto :billreg 
IF %Q%==2 goto :checkbill 
IF %Q%==3 goto :editbill 
rem IF "%Q%"=="" call :invalid // Youre better off just using the next command, which i noted is present later on. 
if not defined Q call :invalid 
echo. 
echo. 
echo. 
echo. 


:registercheck 
cls 
set usrname= 
echo. 
echo. 
echo. 
echo. 
echo          User: Not logged in 
echo         =========================== 
echo           User Check 
echo         =========================== 
echo         ^| Type Your username ^| 
echo         ^| to check if it is ^| 
echo         ^| Existing    ^| 
echo         ___________________________ 
set /P usrname=".         Username:" 
if exist "C:\Users\%USERNAME%\Documents\billregister\%usrname%" goto :login 
if not exist "C:\Users\%USERNAME%\Documents\billregister\%usrname%" goto :userreg 
goto :main 
:invalid 
:login 
cls 
echo Please log in to your account! 
set usr= 
set /p usr=Username: 
if {%usr%}=={} goto :login 
set authenticated= 
for /f "tokens=*" %%a in (C:\Users\%USERNAME%\Documents\billregister\%usrname%\usrname.dll) do (
    if {%%a}=={%usr%} set authenticated=true 
) 

if not defined authenticated (echo Invalid Username & goto :login) 

:passwo 
set pass= 
set /p pass=Enter your password: 
if {%pass%}=={} goto :login 
set authenticated= 
for /f "tokens=*" %%a in (C:\Users\%USERNAME%\Documents\billregister\%usrname%\usrnamep.dll) do (
    if {%%a}=={%pass%} set authenticated=true 
) 
if not defined authenticated (echo Invalid password & goto :login) 
:loggedin 
goto :main 


:userreg 
cls 
echo         =========================== 
echo           Please Register 
echo         =========================== 
Set usrname= 
set /p usrname=".         Username:" 
Set passw= 
set /p passw=".         Password:" 
MKDIR "C:\Users\%USERNAME%\Documents\billregister\%usrname%\" 
echo %usrname% > "C:\Users\%USERNAME%\Documents\billregister\%usrname%\usrname.dll" 
echo %passw% > "C:\Users\%USERNAME%\Documents\billregister\%usrname%\usrnamep.dll" 
goto :login 

:retrievebill 
:checkbill 
:billreg 
cls 
echo          User: %usrname% 
echo         =========================== 
echo           Bill register form 
echo         =========================== 
echo         ^| Fill out the form ^| 
echo         ^| In order to register ^| 
echo         ^| Your bills   ^| 
echo         ___________________________ 
set orgname= 
set /p orgname=".         Payment to(name):"       
set orgacc= 
set /p orgacc=".         Payment to account:" 
set faknr= 
set /P Faknr=".         FAKTURA-Number:" 
set efakref= 
set /p efakref=".         E-Faktura Ref:" 
set totpay= 
set /p totpay=".         Total ammount to pay:" 
set duetodate= 
set /p duetodate=".         Due to date:" 
set kidnr= 
set /p kidnr=".         KID-Number:" 
set payfor= 
set /p payfor="Write a short describtion of what you pay for:" 
rem These two following lines just didnt work, so i made an else block instead. 
if exist "C:\Users\%USERNAME%\Documents\billregister\%usrname%\bills\%orgname%" (
    goto :writebill 
) else (
    goto :makedirectory 
) 
:makedirectory 
MKDIR "C:\Users\%USERNAME%\Documents\billregister\%usrname%\bills\%orgname%\" & goto :writebill 


:writebill 
(
    echo          E-Faktura Referance: %efakref% 
    echo          KID-Number: %kidnr% 
    echo         ================================================================= 
    echo          Bill from: %orgname%    Faktura number: %faknr% 
    echo         =================================================================       
    echo         pay-to Account number: %orgacc% 
    echo. 
    echo         Due to date: %duetodate% 
    echo. 
    echo         Describtion of what you pay for: 
    echo         ________________________________________________________________ 
    echo         %payfor% 
    echo         ================================================================ 
    echo         Total Ammount to pay: %totpay% -NOK 
    ) > "C:\Users\%USERNAME%\Documents\billregister\%usrname%\bills\%orgname%\bill_%orgname%_faktura%faknr%.txt" 
Pause>nul 

goto :registeredbill 
:registeredbill 
cls 
echo The bill is now saved 
pause>Nul 
goto :billreg 







:editbill 
+0

随时删除我的'rem'的评论。刚刚添加,所以我不给一个代码只有答案。恨那些...... – Bloodied

+0

哈哈哈检查法案选项尚未实施..因为我没有来到那么远。我只是把标签写下来,所以我记得当我得到我工作时感到困扰的部分时该怎么做。 xDDD,所以支票帐单目前没有功能xD –

+0

Ah.that解释了为什么你有几个标签连续。无论如何,它的工作? – Bloodied