![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-06 13:22 |
共 48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » for命令截取指定字符 |
| 可打印版本 1,143 / 11 |
| 第1楼 maker0321 | 发表于 2007-11-14 23:03 |
| 初级用户 发帖 37 积分 78 | |
|
for命令截取指定字符 现在遇到一个难题,希望大家能帮忙解决!先谢过各位高手!做成bat文件
现有一个文件lar.txt里面记录了一些文件名。 例如: e:\web\abc.com\asdfasdf.mdb e:\web\bdccv.com\asdfas.mdb …… …… 现在想要1、提取这个lar.txt文件中第二个“\”和第三个“\”中的字符串。将提取出来的这些字符串作为一个变量。2、并在d盘下创建这些变量的文件夹。例如d:\abc.com、d:\bdccv.com这些文件夹;3、将lar.txt中的这些文件拷贝到这些相对应的文件夹中。 请高手帮帮忙,一方面因为工作总要做这种工作,不想再手工弄了。另一方面也在学习dos的for命令。如果真能实现,请帮忙在程序中注明解释。小弟也能提高自己的水平,向高手靠近。给与帮忙小弟一定会加分!! |
|
| 第2楼 lxmxn | 发表于 2007-11-14 23:11 |
| 版主 发帖 4,938 积分 11,386 | |
|
最终目的是copy这些文件到对应的文件夹中去,一定要设置这些字符串为变量么?
|
|
| 第3楼 fastslz | 发表于 2007-11-14 23:21 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
| 第4楼 fastslz | 发表于 2007-11-14 23:23 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
![]() ![]() ![]() |
|
| 第5楼 lxmxn | 发表于 2007-11-14 23:24 |
| 版主 发帖 4,938 积分 11,386 | |
|
呵呵,fastslz 误解了楼主的意思了吧?
|
|
| 第6楼 fastslz | 发表于 2007-11-14 23:39 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
哦是的忽略了他要拷贝原文件
楼主自己选择吧一个启用变量延迟,一用call,2种都理解了“一石二鸟” 和lxmxn版主有一共同点比较强盗md "D:\%1" 2>nul省去if not exist ![]() |
|
| 第7楼 maker0321 | 发表于 2007-11-15 10:03 |
| 初级用户 发帖 37 积分 78 | |
|
版主的命令还有些问题。例如lar.txt文件内容如下:
"F:\win2003sp1\vmware.log" "F:\win2003sp1\xxx\vmware.log" 命令不仅会建立xxx文件夹,还会建立vmware.log文件夹(这是不需要的),请帮忙再测试。还有就是我有些看不懂版主的命令。可否在for命令处做些解释,不胜感激。 fastslz的命令实在是看不懂,没有测试。不好意思,但是我会给你加分。再次感谢。 |
|
| 第8楼 fastslz | 发表于 2007-11-15 12:12 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
还看不懂?
Originally posted by maker0321 at 2007-11-14 23:03: "tokens=2,3 delims=\"按你的思路第二个“\”和第三个“\”写的,否则我不必这样写,这样写会出来一个%%j就比较难理解了。 |
|
| 第9楼 maker0321 | 发表于 2007-11-15 12:53 |
| 初级用户 发帖 37 积分 78 | |
|
@echo off
for /f "delims=" %%a in (lar.txt)【把lar.txt文件中的每一行的内容作为%%a的内容】 do ( for /f "tokens=2,3 delims=\" %%i in ("%%a")【把%%a中的第二个/和第三个/中的内容作为值传递给谁了??】 do call :slz %%j【%%j的值是什么?】 %%a ) pause :slz set xxx=%1【%1的值什么??】 if not defined【no defined是什么意思??】 xxx goto:eof【程序中没有:eof】 md "D:\%1" 2>nul copy /y "%2"【%2又是什么??】 "D:\%1\" goto:eof 这是对fastslz大哥程序不明白的地方,对不起我是新手,刚刚来这里学习的。很多地方都是很明白,真心希望能得到大家的帮助。请不要嫌弃我白痴。谢谢各位。 |
|
| 第10楼 fastslz | 发表于 2007-11-15 13:51 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
@echo off
for /f "delims=" %%a in (lar.txt)【把lar.txt文件中的每一行的内容作为%%a的内容】 do ( for /f "tokens=2,3 delims=\" %%i in ("%%a")【把%%a中的第二个/和第三个/中的内容作为值传递给了%%j】 do call :slz %%j这里换成%%i就是第1个/和第2个/中的内容 %%a ) pause :slz '【到这里上面的%%j变成了%1,%%a变成了%2,为什么要用call呢是为了处理完每个%%a】 set xxx=%1设置一个xxx变量 if not defined xxx goto:eof【如果没有定义xxx跳回for本身】也就是处理完最后1个%%a跳回for本身,如果没有xxx变量和这一句,P也能运行只是最后会显示1个未定义操作,起到修饰作用 md "D:\%1" 2>nul copy /y "%2" "D:\%1\" goto:eof【处理完1个%%a后跳回for本身】 [ Last edited by fastslz on 2007-11-15 at 01:54 PM ] |
|
| 第11楼 maker0321 | 发表于 2007-11-15 14:45 |
| 初级用户 发帖 37 积分 78 | |
|
YES!!终于明白了fastslz你的意思了。衷心谢谢!金牌果真不是浪得虚名!佩服佩服!
|
|
| 第12楼 jianxiao | 发表于 2007-11-18 16:17 |
| 初级用户 发帖 9 积分 33 | |
|
请问在纯dos下有没有具有这样的功能的命令呢?
for /f 在纯dos下是不行的 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |