CMD/BAT 编写记录

General:
1)
显示当前文件所在路径:

%~dp0  

2)
当读取路径中存在空格时候,必须加上 双引号 “”

eg:
set home_dir_sean=%~dp0
echo %home_dir_sean%
dir /s/b "%home_dir_sean%" > C:\Users\brand\Desktop\a.txt

一. set

  1. set /p 用于赋值 eg:

将文本1.txt 的第一行数据 赋值给变量 a

set /p a=<1.txt 
echo %a%
  1. set /a 用于计算 eg:

如果直接打印%car% 结果将会是 : 2*3

set /a car= 2*3
echo %car%

二. for 循环
参照:https://www.cnblogs.com/gered/p/10682741.html#autoid-4-0-0

  1. 循环读取文件中的多行内容
for /f "delims=, tokens=2" %%i in (1.txt) do (echo  %%i)

“tokens=2”表示提取第二个字段值
delims=, 表示每行以 , 号进行分割

延时变量:
在使用时,我这里尚且不关注内部运行机制,先了解使用的方法。

rem --未使用延时变量

for /l %%i in (1 1 5) do (
set v=%%i
echo %v%
)

打印结果:

5
5
5
5
5

这里我们发现和我们所预期的 1,2,3,4,5 不一样
再次测试把 变量初始化放在外面:

set v=a

for /l %%i in (1 1 5) do (
set v=%%i
echo %v%
)

打印结果:

a
a
a
a
a

说明循环进行了,但是循环过程中并没有赋值的操作。

此处我不做深究,只想得到如何处理成理想的结果,因此想要得到预期的结果我们的处理方法是 如下:

 SETLOCAL ENABLEDELAYEDEXPANSION
 for /l %%i in (1 1 5) do (
 set v=%%i
 echo !v!
 )

打印结果:

1
2
3
4
5

因此得出结论:需要做的修改是
1) 在代码中加入: SETLOCAL ENABLEDELAYEDEXPANSION
2) 取出变量时 :使用 !variable! 的方式替代 %variable%的方式
缺一不可

三 . Goto :eof
这个命令相当于 break的作用,可以用于方法中和结束的标志。
eg:

@ echo off
call :label
echo 1
echo 2
set home_dir_sean=%~dp0
echo %home_dir_sean%
dir /s/b "%home_dir_sean%" > C:\Users\ad\Desktop\a.txt
echo "append done"
Goto :eof
:label
echo 3
echo 4
Goto :eof

结果打印:

3
4
1
2
C:\D\ad\bat-learn\
"append done"

如果去掉中间的 Goto :eof,查看结果

@ echo off
call :label
echo 1
echo 2
set home_dir_sean=%~dp0
echo %home_dir_sean%
dir /s/b "%home_dir_sean%" > C:\Users\brandonxian\Desktop\a.txt
echo "append done"
rem Goto :eof
:label
echo 3
echo 4
Goto :eof
3
4
1
2
C:\D\ad\bat-learn\
"append done"
3
4

结果显示出 注释掉Goto :eof后的打印结果 还打印:lable的结果。
由此可见此命令做为 结束标志。

四 . dir 展示文档下的文件信息(和linus/unix 的 ls 类似)

查看帮助说明:

dir /?

1) dir /b 只打印文件列表不展示信息
2) dir /s 显示指定目录和所有子目录中的文件。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值