一个bat文件中创建一个数据库(Create a database within a bat fil

2019-10-19 08:37发布

我想创建一个bat文件在本质上是一个数据库。 我希望能够进入被束缚在单一记录信息。 当我进入一个纪录,我希望能够通过分配给它的卡号来查找记录。 我现在有代码中并没有真正的工作,由于这两个变量没有被正确保存的事实。

这是我的代码:

Color 5F
@echo off
:start
cls
echo ==========================================
echo           Gift Card
echo ==========================================
echo.
echo What would you like to do?
echo.
echo    1 Add Card
echo    2 Check Information
echo    3 Edit Card Balance
echo    4 Delete Card
echo.
set /p choice=Please enter choice: 
if /I %choice%==1 goto 1
if /I %choice%==2 goto 2

:1
echo.
set /p var=Enter Card Number: 
set /p val=Enter Amount: 
set /p fname=Enter First Name: 
set /p lname=Enter Last Name: 
set /p cbal=Enter Current Balance: 
set /p diss=Enter Date issued: 
@echo set %var%=%val%=%fname%=%lname%=%cbal%=%diss% > %var%.bat
echo.
echo The data has been stored!
pause
goto start

:2
echo.
set /p var=Please enter card number: 
setlocal enabledelayedexpansion
call %var%.bat
echo !%fname%! !%lname%!'s !%var%! card has $!%cbal%! on it as of !%diss%!!
pause > nul
goto start

我曾试图单独和共发送变量,没有工作过。 我想那是因为我没有做延迟扩展正确的语法时才。

任何帮助是非常感谢!

Answer 1:

你的问题似乎在于,你生成批处理文件,填补了变数......你生成只有一条线,这实际上并没有任何分配给任何你需要的变量。

试着改变

@echo set %var%=%val%=%fname%=%lname%=%cbal%=%diss% > %var%.bat

成为

@echo set var=%var% > %var%.bat
@echo set val=%val% >> %var%.bat
@echo set fname=%fname% >> %var%.bat
@echo set lname=%lname% >> %var%.bat
@echo set cbal=%cbal% >> %var%.bat
@echo set diss=%diss% >> %var%.bat

这应该让你的变量要正确装回。

此外,变化

echo !%fname%! !%lname%!'s !%var%! card has $!%cbal%! on it as of !%diss%!!

读书

echo %fname% %lname%'s %var% card has $%cbal% on it as of %diss%!

你永远不应该同时使用!%包围在批处理文件中,只有一个或另一个变量。 %在大多数情况下使用; ! 当需要读取的多行“代码块”内的变量应该被使用(例如,的结果if语句或的主体for环),其由括号包围。

一些建议:

  • 你可以把setlocal delayedexpansion在文件开头只有一次,之后@echo off 。 但是,你是不是在这个程序做任何事情(但,至少)需要延迟扩展。 延迟扩展来实现与变量的访问! 象征,只是用括号括多行语句的身体里非常有用。 正因为如此,你应该摆脱它完全,除非/直到你真正需要它,因为它可能会导致其他问题。
  • 有没有必要在你调用之后的任何命令中的“@”符号@echo off (但它不会破坏任何东西)。 在@符号简单地抑制它之前的命令的呼应,但因为所有命令默认沉默之后您调用它是多余的echo off 。 出于这个原因,在调用时只使用它的第一行是很重要的@echo off ,使用户不会看到该命令的响应。


文章来源: Create a database within a bat file