需要使我的批处理程序更紧凑

时间:2015-07-25 11:33:41

标签: batch-file dictionary

我试图制作字典程序......

echo off
Title Afrikaans-English Dictionary
color 0A
cls
echo Created by TheAsainBuffalo
echo Created on 2015-07-25
echo Last Updated 2015-07-25
echo =============================
:Again
set /p Answer=Type in Afikaans Word: 
if %Answer%==afsluit echo English Meaning: to finish
if %Answer%==afrighter echo English Meaning: coach
if %Answer%==agterbland echo English Meaning: blankcover
if %Answer%==aktueel echo English Meaning: actual
if %Answer%==atletiekbaan echo English Meaning: athletics track
if %Answer%==bannoppervlak echo English Meaning: track
if %Answer%==bespeigel echo English Meaning: contemplate
if %Answer%==bespreek echo English Meaning: discuss
if %Answer%==bladsynommer echo English Meaning: page number
if %Answer%==boodskiet echo English Meaning: archery
if %Answer%==draf echo English Meaning: jog
if %Answer%==fiksie echo English Meaning: fiction
if %Answer%==flapteks echo English Meaning: blurb
if %Answer%==hawermout echo English Meaning: oats
if %Answer%==heuweloefeninge echo English Meaning: hill exercises
if %Answer%==hoofkarakter echo English Meaning: protagonist
if %Answer%==illustrasie echo English Meaning: illustration
if %Answer%==inheems echo English Meaning: indigenous
if %Answer%==inhoudsopgowe echo English Meaning: index
if %Answer%==inligting echo English Meaning: information
if %Answer%==inligtingsboeke echo English Meaning: 
if %Answer%==juig echo English Meaning: cheer/applaud
if %Answer%==krale echo English Meaning: beads
if %Answer%==maatskappy echo English Meaning: company
if %Answer%==muurbal echo English Meaning: squash
if %Answer%==nie-fiksie echo English Meaning: non-fiction
if %Answer%==oefeninge echo English Meaning: practice/training
if %Answer%==oplossings echo English Meaning: solutions
if %Answer%==opwarmingsoefeinge echo English Meaning: warm ups
if %Answer%==outeur echo echo English Meaning: author
if %Answer%==pedry echo English Meaning: equestrain
if %Answer%==reken echo English Meaning: desktop
if %Answer%==rekenaar echo English Meaning: PC/Computer
if %Answer%==riller echo English Meaning: thriller (book)
if %Answer%==roei echo English Meaning: paddling
if %Answer%==selfversekerd echo English Meaning: confident
if %Answer%==speurder echo English Meaning: detective
if %Answer%==spieël echo English Meaning: mirror
if %Answer%==spieel echo Possible English Meaning: mirror
if %Answer%==sterspronge echo English Meaning: star jumps
if %Answer%==steun echo English Meaning: support
if %Answer%==stopharlosie echo English Meaning: stopwatch
if %Answer%==tafeldoek echo English Meaning: tablecloth
if %Answer%==teneergedruk echo English Meaning: depressed
if %Answer%==titel echo English Meaning: title
if %Answer%==tjiekilit echo English Meaning: chicklit (book)
if %Answer%==trampopies echo English Meaning: drummies
if %Answer%==tydskrif echo English Meaning: magazine
if %Answer%==verbysteek echo English Meaning: pass
if %Answer%==visie echo English Meaning: pass
if %Answer%==vlugbal echo English Meaning: volleyball
if %Answer%==voorbland echo English Meaning: front cover
if %Answer%==waarheid echo English Meaning: truth
if %Answer%==weerkaatsing echo English Meaning: reflection
if %Answer%==wegspringblokke echo English Meaning: starting blocks
goto Again
::Finished until 18 Feb 2015 (boodskiet)

然而,我希望通过像

之类的东西更容易
set waarheid=truth
set weerkaatsing=reflection
set (Afrikaans Word)=(English Word)
set /p Answer=Type in Afrikaans Word: 
echo Definition %Answer%

很抱歉,如果我是新手或其他什么......我的问题是我需要用户输入来提示南非荷兰语单词的英文单词/含义如果有任何意义...谢谢,如果有人试图帮助!

3 个答案:

答案 0 :(得分:1)

我会将外部文本文件用作“数据库”:

afsluit=to finish
afrighter=coach
agterbland=blankcover
aktueel=actual
atletiekbaan=athletics track
etc. etc. etc.

将批处理文件缩短为“仅代码”:

:Again
set "Answer="
set /p "Answer=Type in Afikaans Word: "
if "%Answer%"=="" goto :Again
for /f "tokens=1,2 delims==" %%i in ('findstr /i /b /c:"%Answer%" dictionary.txt') do (
  echo the english term for %%i is %%j.
)
if /i "%Answer%" neq "exit" goto :Again
echo bye.

当然,这只是基础知识。还应该有一些错误测试(“不在数据库中的单词”)

答案 1 :(得分:0)

这种类型的应用程序借助array以更简单的方式编写。在下面的解决方案中,转换数组存储在相同的批处理文件中,因此不需要其他数据文件。

此外,这个程序有一个有趣的技巧:它可以帮助您轻松定义新的翻译术语!

@echo off
setlocal EnableDelayedExpansion

Title Afrikaans-English Dictionary
color 0A
cls
echo Created by TheAsainBuffalo
echo Created on 2015-07-25
echo Last Updated 2015-07-25
echo =============================

call :CreateTranslationArray

:Again
echo/
set "Afrikaans="
set /p "Afrikaans=Type in Afrikaans Word: "
if not defined Afrikaans goto :EOF
if defined English[%Afrikaans%] (
   echo English Meaning: !English[%Afrikaans%]!
) else (
   echo I don't know the English translation of Afrikaans "%Afrikaans%" yet
   set /P "English=Please give me such translation: "
   set "English[%Afrikaans%]=!English!"
   echo set "English[%Afrikaans%]=!English!">> "%~F0"
)
goto Again
::Finished until 18 Feb 2015 (boodskiet)

:CreateTranslationArray
set "English[afsluit]=to finish"
set "English[afrighter]=coach"
set "English[agterbland]=blankcover"
set "English[aktueel]=actual"
set "English[atletiekbaan]=athletics track"

答案 2 :(得分:0)

您可以在代码中嵌入字典,然后使用FINDSTR找到正确的单词对,使用FOR / F解析结果。

下面是一个漂亮的版本,支持南非荷兰语到英语,英语到南非荷兰语。然而,它只需要一个字典,并且两个完全相同的代码!我大量使用双重扩展,如!%var%!

echo off
setlocal enableDelayedExpansion
Title Afrikaans-English Dictionary
color 0A
set "input=Afrikaans"
set "output=English"
set "beginEnglishSearch=^:::.*:"
set "beginAfrikaansSearch=^:::"
set "endEnglishSearch=$"
set "endAfrikaansSearch=:"
cls

:Prompt
set "word="
set /p "word=Type in %input% Word (or + to switch):"
if not defined word (
  color
  title Command Prompt
  exit /b
)
if "!word!"=="+" (
  set "input=%output%"
  set "output=%input%"
  cls
  goto :Prompt
)
::Result
cls
(
  for /f "tokens=1,2 delims=:" %%A in (
    'findstr /ric:"!begin%input%Search!!word!!end%input%Search!" "%~f0"'
  ) do (
    set "Afrikaans=%%A"
    set "English=%%B"
  )
) && (
  echo %input%: !%input%!
  echo %output%: !%output%!
) || (
  echo !word! not found.
)
echo(
echo(
goto :Prompt

::---------- Afrikaans-English Dictionary below ---------------
:::afsluit:to finish
:::afrighter:coach
:::agterbland:blankcover
:::aktueel:actual
:::atletiekbaan:athletics track
:::bannoppervlak:track
:::bespeigel:contemplate
:::bespreek:discuss
:::bladsynommer:page number
:::boodskiet:archery
:::draf:jog
:::fiksie:fiction
:::flapteks:blurb
:::hawermout:oats
:::heuweloefeninge:hill exercises
:::hoofkarakter:protagonist
:::illustrasie:illustration
:::inheems:indigenous
:::inhoudsopgowe:index
:::inligting:information
:::inligtingsboeke:
:::juig:cheer
:::krale:beads
:::maatskappy:company
:::muurbal:squash
:::nie-fiksie:non-fiction
:::oefeninge:training
:::oplossings:solutions
:::opwarmingsoefeinge:warm ups
:::outeur:author
:::pedry:equestrain
:::reken:desktop
:::rekenaar:computer
:::riller:thriller
:::roei:paddling
:::selfversekerd:confident
:::speurder:detective
:::spieël:mirror
:::spieel:mirror
:::sterspronge:star jumps
:::steun:support
:::stopharlosie:stopwatch
:::tafeldoek:tablecloth
:::teneergedruk:depressed
:::titel:title
:::tjiekilit:chicklit
:::trampopies:drummies
:::tydskrif:magazine
:::verbysteek:pass
:::visie:pass
:::vlugbal:volleyball
:::voorbland:front cover
:::waarheid:truth
:::weerkaatsing:reflection
:::wegspringblokke:starting blocks
相关问题