楼 主
批处理问题 关于 FOR命令 和管道通道符>>
发表于 2005-08-16 20:57 · 中国 福建 三明 电信
新手上路
★
积分 17 发帖 5 注册 2005-08-10 19:17 UID 41525 性别 男
状态 离线
我写了一个批处理可是运行到一段代码时 一直出错 可我就是看不出来为什么
还请大家帮帮看看
@echo off
set bak=%windir%\REGBAK
if not exist %bak%\. md %bak%
echo 删除系统更新目录: >%bak%\RDlist.txt
dir /a:d /b %SystemDrive%\$* >%bak%\del.txt
for /f %a in (%bak%\del.txt) do echo 成功删除目录 %a>>%bak%\RDlist.txt && rd /q /s %a
可以他一直提示 此时不应有 >> 这是怎么回事啊?
第 2 楼
发表于 2005-08-16 22:01 · 中国 广东 广州 白云区 电信
金牌会员
★★★★
D◎$ Fαп
积分 4,562 发帖 1,883 注册 2004-01-19 00:00 UID 15812 性别 男 来自 广东广州
状态 离线
首先,楼主没有说明是在什么系统下运行。
其次,批处理中滥用了环境变量。%windir%是Win9x的独有的环境变量,%SystemDrive%则是Win2000/XP/2003的。
从最后一行的for命令看来,要顺利运行的话需要在Win2000/XP/2003下。批处理的第二行应作如下修改:
set bak=%SystemRoot%\REGBAK
最后一行试试改为两行:
for /f %a in (%bak%\del.txt) do rd /q /s %a
for /f %a in (%bak%\del.txt) do echo 成功删除目录 %a>>%bak%\RDlist.txt
----====≡≡≡≡ 我的至爱,永远是
MSDOS !≡≡≡≡====----
第 3 楼
发表于 2005-08-16 22:23 · 中国 福建 三明 电信
新手上路
★
积分 17 发帖 5 注册 2005-08-10 19:17 UID 41525 性别 男
状态 离线
谢谢你的回答
不作
%WINDIR%这个变量在XP系统下是有的呢 嘎嘎
不信你在CMD下运行 SET看最后一行 就是了!
好的 我试下
第 4 楼
发表于 2005-08-16 22:40 · 中国 福建 三明 电信
新手上路
★
积分 17 发帖 5 注册 2005-08-10 19:17 UID 41525 性别 男
状态 离线
for /f %a in (%bak%\del.txt) do rd /q /s %a
for /f %a in (%bak%\del.txt) do echo 成功删除目录 %a>>%bak%\RDlist.txt
我也有这样试过 但是也是一样
后面我把
%a改%%a就可以用了 不明白中
第 5 楼
发表于 2005-08-16 22:58 · IANA 局域网IP(Private-Use)
钻石会员
★★★★★
积分 10,046 发帖 3,039 注册 2002-11-11 00:00 UID 223 性别 男
状态 离线
在cmd下,键入for /?就知道为什么要用%%a了。
既然%a是实参,形参当然要用%%a啦。
简单就是美
第 6 楼
发表于 2005-09-27 01:11 · 中国 浙江 金华 婺城区 电信
新手上路
★
积分 2 发帖 1 注册 2005-09-27 00:37 UID 42863 性别 男
状态 离线
我在CMD下输入SET,最后一行显示为windir=c:\windows
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正