Batch file 入门
2014-11-26
背景
最近做某个环境在win下的适配,需要一个bat脚本,基本作用:就是一条命令,需要包含输入参数,通常输入参数是写死在命令中的,现在希望能够将这些参数单独提取出来。
变量
@echo on
set var1=hello
set var2=world
echo %var1% %var2% !
PAUSE
执行之后,显示结果:
C:\Documents and Settings\adm\2014-11-23>set var1=hello
C:\Documents and Settings\adm\2014-11-23>set var2=world
C:\Documents and Settings\adm\2014-11-23>echo hello world !
hello world !
C:\Documents and Settings\adm\2014-11-23>PAUSE
请按任意键继续. . .
修改@echo off
,再次运行,结果如下:
hello world !
请按任意键继续. . .
几点注意:
set var1=hello!
其中=
前后不能有
注释
如何在bat脚本中添加注释呢?两种方式:
::
(双冒号);(推荐)rem
;
脚本输入参数
参考command line parmas,通过如下命令,输入参数:
::SCRIPT: test-command.bat
echo off
fake-command /u %1 /p %2
然后,运行命令:test-command admin password
,则,具体执行的命令:
fake-command /u admin /p password
实际上,还有一种输入方式:交互式输入,具体参考:prompt for user input(interact)
读取文件,并追加到另一文件
示例代码如下图:
@echo on
set hosts_delta=hosts_delta.txt
set hosts_file="C:\WINDOWS\system32\drivers\etc\hosts"
FOR /F "tokens=*" %%i IN (%hosts_delta%) DO @ECHO %%i >> %hosts_file%
PAUSE
思考:如何判断A文件是否包含在B文件中?
附录
命令行中调用bat脚本
call script.bat
获取指定目录
获取运行bat脚本的目录:
echo %CD%
获取bat脚本所在目录的parent目录,具体参考batch parent folder:
setlocal
for %%i in ("%~dp0..") do set "folder=%%~fi"
echo %folder%
参考来源
- batch guide
- get windowss batch parent folder
- prompt for user input
- How to find if a file contains a given string using dos command line
- reading text file in batch script
- dos中一些常用命令的errorlevel返回值
原文地址:https://ningg.top/learn-batch-of-dos/