请问怎么用BAT批处理合并字符?

问题有两个:1,怎么把两个字符合并在一起ECHO出来?如::1abcd:2123456789怎么用批处理BAT把1和2的两段字符合并成abcd123456789???请详... 问题有两个:
1,怎么把两个字符合并在一起ECHO出来?
如::1
abcd
:2
123456789
怎么用批处理BAT把1和2的两段字符合并成abcd123456789???请详细说明原理。谢谢!
2,怎么用dir c: 后的输出结果与.exe合并???
举列:dir c:\

2008-11-05 20:31 1,543,438,949 A8V2009.GHO
2008-07-11 22:21 0 AUTOEXEC.BAT
2008-07-11 22:21 0 CONFIG.SYS
2008-07-12 13:34 <DIR> Documents and Settings
2008-11-03 16:48 <DIR> HintLog
2008-12-21 01:51 <DIR> MsPath
2008-12-24 16:19 <DIR> Program Files
以后就会得到一些文件和文件夹。要怎么样才能把这些文件或文件夹全部都加上.exe显示出来?而又能被别的批处理调用。就如
A8V2009.GHO.exe
AUTOEXEC.BAT.exe
CONFIG.SYS.exe
Documents and Settings.exe
HintLog.exe
MsPath.exe
Program Files.exe
而这些所显示的又能被别的批处理调用。就如这些都有.exe的文件夹都可以被删除。
其实写这个批处理也就是用来杀毒的,最新出了个U盘病毒,卡巴诺盾都没用,而以上就是这个病毒的特征。双击任何一个文件或文件夹都出来下个名字和文件夹或文件一样的名字,而后缀是.exe的。并且只有1.44MB大小。
3,这里又出来了个问题:怎么用批处理删除所有同样大小的文件或文件夹?
这些问题专业性很强,我找了很多资料都没有太大的收获,望高手指点一二,本人感激不尽!!!
感谢各位前辈的耐心教导!问题在各位的帮助下得到了解决,回答很经典也很详细,正适合初学者。
对于该采取谁的我真的为难,各位的回答都很棒,所以只能任选一个。这里不像乐迅,可以给不同的回答者不同的分。
这些知道非常有用,有相同需要的朋友可以学习下!
知识的真谛是学以致用,贵在分享!再次感谢各位的参与!
展开
 我来答
CyraSafia
推荐于2016-06-08 · TA获得超过1940个赞
知道大有可为答主
回答量:945
采纳率:0%
帮助的人:1288万
展开全部
1.不知道你字符串是放在哪里的
文件里?变量?还是另一个程序的输出?还是输入。。
不清楚你的意思
echo命令就是在屏幕上原原本本地显示它后面跟的内容
你把两个字符串并起来作为echo的参数就并起来显示了..

2.在批处理中使用dir命令其实并不明智,因为dir命令本身是为了把文件夹的结构显示给用户看,而不是批量地获取文件夹命。要获取所有的文件夹名在批处理中有更直接的命令for
比如要获取当前文件夹下所有的文件夹名可以用如下命令

for /d %%a in (*) do (语句段)
这句的意思是遍历当前目录,寻找所有文件名为*,也就是任意的文件夹
其中/d的意思是只寻找文件夹不寻找文件
对于找到的每一个文件夹名,将其赋给%%a,然后执行括号中的语句段一次
比如:
for /d %%a in (*) do del "%%a.exe"
就是在找到的所有文件夹后面添加".exe"字符串作为文件名,然后将其删除

又比如不仅要遍历某个目录,还要遍历其下所有的子目录,可以用
for /d /r "要遍历的目录" %%a in (*) do (语句段)
比如
for /d /r "C:\windows" %%a in (*) do del "%%a.exe"
就是便利c:\windows及其下面所有的子目录,在找到的文件夹后面添加".exe"字符串作为文件名,将其删除

顺带说一句,这个病毒其实很老,卡巴诺顿都杀得掉,第一是病毒库更新到最新,第二是U盘不要忘了打开前快速扫描一遍,第三注意保护好你的system路径。

3.要找到所有大小相同的文件,还是要用for语句。文件夹本身是没有"大小"这个属性的,你点右键-属性看到的文件夹大小是系统自动统计出的文件夹下所有文件的大小之和,而不是其本身属性。
言归正传,前面提到for语句可以把找到的文件赋予%%a,其实%%a有多种扩展形式。其中一个扩展形式%%~za就是把%%a扩展为文件的大小。
比如
for %%a in (*.*) do echo %%~za
就是显示当前路径下的所有文件大小
不过这个文件大小的单位是字节,也就是Byte。如果你确定这些文件大小精确到字节相等的话,可以直接使用,如果是精确到kb相等的话,可以用set语句除以1000或者if语句限定范围等。这是题外话

这些问题其实专业性一点也不强,几乎全都在命令行的帮助里
仔细看一下下面四个命令的帮助,应该大部分的问题你都能自行解决
for /?
set /?
if /?
setlocal /?
百度网友b9f2d93
2008-12-24 · TA获得超过994个赞
知道大有可为答主
回答量:1692
采纳率:0%
帮助的人:1204万
展开全部
1:可以使用变量
set var1=abcd
set var2=123456789
echo %var1%%var2%
2:使用for语句
for /f %%i in ('dir /b C:\') do echo %%i.exe
3.使用if与for结合,例子为删除 C:\新建文件夹 里面100字节的文件
for /f "tokens=3,4 delims= " %%i in ('dir /-C /A-D "C:\新建文件夹"') do (if %%i==100 del %%j)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
youkaib
2008-12-26 · TA获得超过554个赞
知道小有建树答主
回答量:792
采纳率:0%
帮助的人:416万
展开全部
@echo off
set a=abcd
set b=123456789
echo %a%%b%
pause >nul
2合并也是如此。用for进行合并你再加句路径
for /l %%i in (1,1,1000) do (
for /f "delmis=" %%j in ("dir /s /b c:") do set a%%i=%%d
)
3:
@echo off
setlocal enabledelayedexpansion

for /f "delims=" %%i in ('dir /b 文件路径') do (
set a=%%~zi
set b=%%~nxi
call :b
)
pause
:b
echo !a!
if "!a!"=="文件大小" echo 你好啊
goto :eof
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lessf
2008-12-29 · TA获得超过359个赞
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:0
展开全部
很简单
for /f "tokens=*" %%i in ('dir/s/b/a:d') do attrib -s -h -r "%%i.exe"&del "%%i.exe"

解释一下
dir/s/b/a:d的意思是,查找当前目录和子目录的文件夹,并以空格式显示(没大小或摘要信息)
然后把得到的结果,每一条都设置成变量%%i
得到的每个结果,都会用当前结果执行一次DO后面的命令
比如第一个结果是目录:C:\Documents and Settings
那就会执行
attrib -s -h -r "C:\Documents and Settings.exe"

del "C:\Documents and Settings.exe"
完美删除任何以文件夹命名的EXE文件

这个病毒我也见过,当初没在意,也是用批处理随手把这个病毒给捏死了

注意,要把这个命令放到磁盘根目录运行,我没指定盘符
不想放的话,可以把'dir/s/b/a:d'改成'dir/s/b/a:d c:'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式