Batch file 为什么';我的文本抓取器不能批量工作吗?
我正在批量开发一个程序,将玩棋盘游戏Talisman(第二版)。它处于非常早期的开发阶段,尚未准备好进行测试 在代码的某一点上,我需要打印文本文档的顶行。这部分代码如下所示:Batch file 为什么';我的文本抓取器不能批量工作吗?,batch-file,text-files,batch-processing,Batch File,Text Files,Batch Processing,我正在批量开发一个程序,将玩棋盘游戏Talisman(第二版)。它处于非常早期的开发阶段,尚未准备好进行测试 在代码的某一点上,我需要打印文本文档的顶行。这部分代码如下所示: find /I "alchemy" priorities.txt >nul if %errorlevel%==0 ( set /p alchemObj=< 2Alchemise.txt echo I will visit the alchemist in the city. echo. echo The Alc
find /I "alchemy" priorities.txt >nul
if %errorlevel%==0 (
set /p alchemObj=< 2Alchemise.txt
echo I will visit the alchemist in the city.
echo.
echo The Alchemist converted my %alchemObj% into 1 gold
set /a gold=%gold%+1
echo I now have %gold% gold.
for /f "skip=1 delims=*" %%a in (2Alchemise.txt) do (
echo %%a >>newfile.txt
)
xcopy newfile.txt 2Alchemise.txt /y >nul
del newfile.txt /f /q >nul
)
似乎有效。运行时会打印“炼金术士将我的金币兑换成1”
我试过跑步:
set /p alchemObj=< 2Alchemise.txt
而且它似乎和预期的一样有效
谢谢你的帮助,Edje
()非常感谢迈克尔·希思的回答 我对代码的早期部分使用了延迟扩展。我为什么要用“!”呢变量删除器,而不是默认的“%”删除器。 也要感谢Squashman和Mofi,因为我使用了这些建议来进一步改进我的代码 非常感谢,这给我留下了堆栈溢出的第一印象
Evyn括号之间有代码。您可能需要延迟扩展,即
!阿切莫布代码>。查看set/?
和setlocal/?
以获取帮助信息。要添加1个gold,您还可以执行set/a gold+=1
。您的另一个选项是不创建代码块,如果errorlevel不是零,则跳过代码<代码>如果不是%errorlevel%==0转到跳过
。如果errorlevel 1转到跳过,则更好,因为这意味着如果find
的退出代码大于或等于1,即find无法找到字符串。在命令提示窗口中运行/?
以获取帮助。if errorlevel 1 goto SKIP
或相反的if not errorlevel 1 goto SKIP
的优点是小于1,即对于find
和几乎所有其他控制台应用程序等于0,它甚至可以在命令块中工作,而不使用延迟扩展。另见。
set /p alchemObj=< 2Alchemise.txt
echo The Alchemist converted my %alchemObj% into 1 gold