中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 初学者问关于字符串变量处理的问题
作者:
标题: 初学者问关于字符串变量处理的问题 上一主题 | 下一主题
soli
新手上路





积分 8
发帖 3
注册 2007-9-3
状态 离线
『楼 主』:  初学者问关于字符串变量处理的问题

批处理脚本实现的功能很简单,但对于初学者的我似乎很费周折,请高手赐教,谢谢。
rem 把当前路径下的所有.txt文件的文件名加入变量FILELIST并以分号隔开

setlocal EnableDelayedExpansion
set FILELIST=
for %%I in (*) do (
set FILENAME=%%I
if !FILENAME:~-4%! == ".txt" (
set FILELIST=%%I;!FILELIST!
)
)

rem 下面把变量输出到文件,以便检查结果正确与否
echo %FILELIST% >>a.txt
endlocal
注意:这是批处理文件中的脚本,而不是在CMD下。

[ Last edited by soli on 2007-9-3 at 11:49 PM ]

2007-9-3 23:35
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
soli
新手上路





积分 8
发帖 3
注册 2007-9-3
状态 离线
『第 2 楼』:  

似乎不是字符串处理的问题,而是if语句的问题。

setlocal EnableDelayedExpansion
set FILELIST=
for %%I in (*) do (
set FILENAME=%%I

rem 这里打印出的内容是.txt的时候,仍不能进入下面的if语句
echo !FILENAME:~-4%!

if !FILENAME:~-4%! == ".txt" (
set FILELIST=%%I;!FILELIST!
)
)
echo %FILELIST% >>a.txt
endlocal

[ Last edited by soli on 2007-9-3 at 11:51 PM ]

2007-9-3 23:49
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
soli
新手上路





积分 8
发帖 3
注册 2007-9-3
状态 离线
『第 3 楼』:  

已解决


setlocal EnableDelayedExpansion
set FILELIST=
for %%I in (*) do (
        set FILENAME=%%I

        rem 这里前面的变量必须加双引号
        if /I !FILENAME:~4%! == ".txt" (
                set FILELIST=%%I;!FILELIST!
        ) else (
                echo Not a txt file.
        )
)
echo %FILELIST% >>a.txt
endlocal

[ Last edited by soli on 2007-9-4 at 01:21 AM ]

2007-9-4 01:19
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
ThinKing
中级用户





积分 471
发帖 207
注册 2007-5-3
状态 离线
『第 4 楼』:  

3楼红色引号貌似也不成,因为是中文的。

另一种方法:
for %%a in (*.txt) do @set/p=%%a;<nul>>newfile.txt


2007-9-4 17:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: