Board logo

标题: 批处理问题 关于 FOR命令 和管道通道符>> [打印本页]

作者: mamingna     时间: 2005-8-16 20:57    标题: 批处理问题 关于 FOR命令 和管道通道符>>

我写了一个批处理可是运行到一段代码时 一直出错 可我就是看不出来为什么
还请大家帮帮看看
@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

可以他一直提示 此时不应有 >> 这是怎么回事啊?
作者: JonePeng     时间: 2005-8-16 22:01
首先,楼主没有说明是在什么系统下运行。
其次,批处理中滥用了环境变量。%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
作者: mamingna     时间: 2005-8-16 22:23
谢谢你的回答
不作
%WINDIR%这个变量在XP系统下是有的呢 嘎嘎
不信你在CMD下运行 SET看最后一行 就是了!
好的 我试下
作者: mamingna     时间: 2005-8-16 22:40
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就可以用了 不明白中
作者: Michael     时间: 2005-8-16 22:58
在cmd下,键入for /?就知道为什么要用%%a了。
既然%a是实参,形参当然要用%%a啦。
作者: tonyway2005     时间: 2005-9-27 01:11
我在CMD下输入SET,最后一行显示为windir=c:\windows