中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 05:53
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教我的批处理那个地方有问题 查看 801 回复 12
楼 主 请教我的批处理那个地方有问题 发表于 2008-07-23 11:03 ·  中国 河南 郑州 电信
初级用户
★★
积分 123
发帖 62
注册 2008-04-09 16:11
18年会员
UID 115362
性别 男
状态 离线
set /p filename=客户资料
set alldrive=f
for %%i in (%alldrive%) do if exist %%i:\ dir /b %%i:| find "%filename%"
move %filename% e:\win
pause


本意是查找所有盘符下的客户资料然后MOVE到e:\win文件夹下,但发现有问题所以改为只查找f:
但改为f:后还是不行
2 发表于 2008-07-23 11:15 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
我也纳闷 有时后find “字眼” 明明存在字眼 但是就是不会显示出来
刚刚试了一下 find "字眼" 字眼是要区分大小写的
我搜 If_Exist 文件夹 成功
if_exist 不成功
3 发表于 2008-07-23 11:26 ·  中国 河南 郑州 电信
初级用户
★★
积分 123
发帖 62
注册 2008-04-09 16:11
18年会员
UID 115362
性别 男
状态 离线
我纳闷死了。。。我已经测试了大小写还不行。。
比如搜索的是“客户资料” 汉字还区分大小写吗??
4 发表于 2008-07-23 11:32 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线
set /p filename=客户资料
中“客户资料”是显示内容而不是filename的值
5 发表于 2008-07-23 11:37 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
把set命令里面的/p开关去掉
6 发表于 2008-07-23 11:41 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
感觉这个批处理问题很大……好像……
我差点没郁闷而死…… 这个我自己测试成功的代码

@echo off
set /p filename=":"
if exist f:\%filename% move f:\%filename% e:\

(if exist f:\%filename% 这句的判断就已经包括对f盘是否存在的判断,直接,简便)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
wang6542975 +2 2008-07-23 17:23
7 发表于 2008-07-23 11:46 ·  中国 河南 郑州 电信
初级用户
★★
积分 123
发帖 62
注册 2008-04-09 16:11
18年会员
UID 115362
性别 男
状态 离线
/p开关去掉后可以查找到客户资料文件夹,但还是不能move,提示拒绝访问。文件夹位置和文件没有问题。。
还望指教
8 发表于 2008-07-23 11:51 ·  中国 河南 郑州 电信
初级用户
★★
积分 123
发帖 62
注册 2008-04-09 16:11
18年会员
UID 115362
性别 男
状态 离线
。。提示系统找不到指定的文件,抱歉,看错了。
本认为是目录的问题,然后把批处理放着客户资料文件夹下运行也不行。。
9 发表于 2008-07-23 12:02 ·  中国 河南 郑州 电信
初级用户
★★
积分 123
发帖 62
注册 2008-04-09 16:11
18年会员
UID 115362
性别 男
状态 离线
好像是MOVE命令的问题。
10 发表于 2008-07-23 14:27 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
郁闷 极度郁闷 !!!
(希望你把相关的图像截下来 发到贴上让大家伙看一下)
11 发表于 2008-07-23 17:11 ·  中国 广东 广州 电信
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
@echo off
for %%a in (c d e f g h i j k l m n) do (
if exist %%a: (
for /f "delims=" %%b in ('dir /s/b %%a:^|find /i "客户资料"') do (
echo move /y "%%b" e:\win\
)
)
)
Pause
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
wang6542975 +2 2008-07-23 17:22
12 谢谢!! 发表于 2008-07-23 17:25 ·  中国 河南 郑州 电信
初级用户
★★
积分 123
发帖 62
注册 2008-04-09 16:11
18年会员
UID 115362
性别 男
状态 离线
这么清晰的思路值得我好好学习!!
对了假如是以“客户资料”为名的文件夹怎么办?
MOVE“客户资料”文件夹到E:\WIN
我试了试比较难。。
13 发表于 2008-07-23 17:55 ·  中国 广东 广州 电信
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
试试这个?
@echo off
for %%a in (c d e f g h i j k l m n) do (
if exist %%a: (
for /f "delims=" %%b in ('dir /s/b/ad "%%a:\*"^|findstr /i /e "\\客户资料"') do (
echo move /y "%%b" e:\win\
)
)
)
Pause
论坛跳转: