批处理相关笔记

原创
2016/07/11 16:26
阅读数 32

字符串替换

格式 %变量C:A=B%

意思就是把变量C中的A替换为B

·批处理对格式要求严格,该有的空格不能省略

(比如for语句 in 和do 旁边的括号就必须有空格;echo 与括号之间也应该有空格,否则就报错)

·开启延迟环境变量扩展.

我对延迟变量了解得不清楚,仅仅有一些印象,就是当你想让声明后的变量可以马上用起来,而不提示 ECHO已关闭的话, 那么就要先开启这个变量延迟。 开启之后,引用变量的方式要从百分号变成感叹号: %var%变成 !var!

开启方式在代码前面写:

setlocal EnableDelayedExpansion

自动请求管理员权限

讲这段代码放在你的代码前面即可:

%1 %2 
ver|find "5.">nul&&goto :st 
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :st","","runas",1)(window.close)&goto :eof 
:st 
copy "%~0" "%windir%\system32\"

添加多行内容

我的做法是直接重定向进去:

echo 内容1>> temp.txt
echo 内容2>> temp.txt

删除指定行数内容

比如你需要删除 出现ABC 的那一段 到 EFG 那段中的所有内容。

那么可以使用这段代码:

set FIND_ABC=false
set FIND_EFG=false
echo.>temp.txt
for /f  "delims=" %%i in ( file.txt ) do (
	set currentLine=%%i 
	echo !currentLine!|find "ABC">nul&&set FIND_START=true
	if !FIND_START!==true (
		if !FIND_END!==true (
			echo %%i>>temp.txt
		) 
	) else (
		echo %%i>>temp.txt
	) 
	echo !currentLine!|find "EFG">nul&&set FIND_END=true
 )

这段代码的作用就是在循环到ABC和EFG那段的时候,不ECHO任何信息,

除此之外其他所有内容都ECHO到 临时问题件temp.txt上面去。

最后删除file.txt文件,讲临时文件temp.txt重命名为file.txt实现删除指定行内容。

del file.txt rem 删除文件
ren temp.txt file.txt 修改temp.txt名为file.txt
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部