中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-24 06:52
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处小玩意! 玩出你的水平! 查看 2,888 回复 18
楼 主 批处小玩意! 玩出你的水平! 发表于 2006-11-16 05:01 ·  中国 黑龙江 鹤岗 宝泉岭垦区垦区 联通
新手上路
积分 4
发帖 1
注册 2006-09-14 21:05
19年会员
UID 62586
状态 离线
呵呵 ...

共享出你觉得经典的 批处理把....

我先来一个 ...

@echo off
for %%a in (c d e f) do (

for /f "delims=" %%i in ('dir /s/b/a-d %%a:\*.doc') do (
copy %%~fsi .\
)
)
pause





嘿嘿 这是群里的朋友写的 。。。具体是谁 我就不写了 怕打扰到 ....
2 发表于 2006-11-16 05:32 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
这里的版主和高手们的作品你都看了吗?都是经典啊!
可以说,本论坛代表了国内(不敢说世界)批处理的最高水平了。
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
3 xiaohacker 发表于 2007-01-15 09:20 ·  IANA 局域网IP(Private-Use)
初级用户
积分 110
发帖 45
注册 2007-01-07 00:00
19年会员
UID 75756
性别 男
状态 离线
非常赞同二楼说的!
4 发表于 2007-01-15 09:49 ·  中国 河南 南阳 电信
初级用户
积分 24
发帖 9
注册 2006-08-20 09:23
19年会员
UID 60912
状态 离线
需要我来解释一下意思吗??????
5 发表于 2007-01-15 10:12 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  无语……
6 发表于 2007-01-15 11:53 ·  中国 广东 河源 电信
新手上路
积分 11
发帖 7
注册 2006-10-19 20:08
19年会员
UID 66977
状态 离线
学习中,,。。。。
7 发表于 2007-01-15 13:12 ·  中国 广东 广州 教育网
铂金会员
★★★★
C++启程者
积分 5,154
发帖 1,827
注册 2003-07-18 00:00
22年会员
UID 7105
性别 男
状态 离线
Originally posted by hsw at 2006-11-16 05:01 AM:

@echo off
for %%a in (c d e f) do (

for /f "delims=" %%i in ('dir /s/b/a-d %%a:\*.doc') do (
c ...


感觉delims和dir组合效率低,不到万不得已不宜用,
应该用用 FOR /R 来处理(c d e f)
但是 好象 /R 后面不能跟变量?
怎样使 /R 后面能处理(c d e f)?

目标如下:
1:
for %a in (c d e) do
(
for /r %a: %b in (*.doc) do if exist %b rename %b %~nb.dos
)
说不合法

2:
for %a in (c d e) do
(
set var=%a: && for /r %var% %b in (*.doc) do if exist %b rename %b %~nb.dos
)
仍说不合法

能不能实现呢?
就是怎样使执行 /R 之前把变量变成值? 用ECHO ?

[ Last edited by GOTOmsdos on 2007-1-19 at 01:16 AM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
zhxy9804 +2 2007-01-16 00:12
8 发表于 2007-01-15 15:06 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  变通一下,试试下面这个:

@echo off
for %%i in (c d e f) do call :printf %%i
pause

:printf
for /r "%1:\" %%j in (*.doc) do echo=%%j
9 发表于 2007-01-15 22:27 ·  中国 山东 济南 电信
社区乞丐
★★
此图片另存后死机
积分 -49
发帖 90
注册 2006-12-02 13:00
19年会员
UID 72412
性别 男
状态 离线
井底之蛙,
不过恭喜你,找对了门路,终于来到了这里,很快你就会知道天有多大了.
这里几位巨人级别的代码,保证你什么时候看了什么时候哭....
我的网络笔记本.非联系本人请勿访问!http://w.vicp.net
10 发表于 2007-01-16 00:14 ·  中国 山东 临沂 电信
中级用户
★★
积分 208
发帖 97
注册 2006-12-28 22:08
19年会员
UID 74845
性别 男
状态 离线
给我具体讲一下8楼的代码吧,知道是把盘里的doc文件列出来
就是看不懂 ,谁给我讲一下?多谢了!!!
11 : 发表于 2007-01-16 03:02 ·  中国 广西 南宁 西乡塘区 电信
新手上路
积分 16
发帖 6
注册 2006-12-18 22:10
19年会员
UID 73879
性别 男
状态 离线
我也不算懂..请说明.
12 求知! 发表于 2007-01-16 03:57 ·  中国 重庆 南岸区 电信
新手上路
积分 16
发帖 6
注册 2007-01-16 03:09
19年会员
UID 76630
性别 男
状态 离线
我是菜鸟,为什么do后面有()号啊,是什么意思,我看的书籍里没讲.:(
13 发表于 2007-01-16 06:31 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  这个一下不好解释,搜索一下论坛里面关于 for 和 call 命令的帖子吧。
14 发表于 2007-01-16 11:37
中级用户
★★
DOS之日
积分 337
发帖 161
注册 2006-11-04 05:27
19年会员
UID 69523
性别 男
状态 离线
说两个问题,
第一个是,do 后面的左括(号,一定要和do 在一行,不然会出错的.
第二个是,for /r 后面的路径参数是一定要是路径,也就是说C:要写成C:\才可以.

基本上%1,和%X%形式的变量都可以做路径变量,但是不可以用!X!和延迟变量形式,我试了多次也不行.所以用call调用是唯一的办法了(当然除了用字符串截取等).
for /f %%h in (`echo hxuan`) do for /f %%x in (`echo hxuan`) do if %%h==%%x nul
15 发表于 2007-01-17 00:26
中级用户
★★
DOS之日
积分 337
发帖 161
注册 2006-11-04 05:27
19年会员
UID 69523
性别 男
状态 离线
我来一个吧.



  1. @echo off
  2. set c=0&set "dd=cde"
  3. :loop
  4. call set "d=%%dd:~%c%,1%%"
  5. if "%d%"=="" goto :eof
  6. for /r "%d%:\" %%b in (*.doc) do echo;&&echo;[%%b]
  7. set /a c+=1
  8. goto loop
  9. pause
hxuan?表ー: 2007-01-16 11:24


echo;这里不可以用echo.

[ Last edited by hxuan999 on 2007-1-16 at 12:29 PM ]
for /f %%h in (`echo hxuan`) do for /f %%x in (`echo hxuan`) do if %%h==%%x nul
论坛跳转: