dos批处理forfiles的问题--forfiles在当前目录下无法执行

wangjianming45 2010-09-28 11:31:50
问题描述:
我在目录D:\DBA User\Cw11\Endeca下有一个bat文件,文件的内容是用Forfiles查看有哪些*.log文件。当我执行该Bat文件的时候,Forfiles一直在Run(像是死循环)。但是,当我将该Bat文件Copy到其他目录,比如D:\DBA User\Cw11后,Bat文件可以正常的被执行,得到我想要的结果。郁闷啦~~

测试方法:
----------------------------------------------
C:\Users\cw11>cd /d D:\DBA User\Cw11\Endeca

D:\DBA User\Cw11\Endeca>forfiles /p "D:\DBA User\Cw11\Endeca" /M *.log /D -2 /c
"cmd /C echo @file"
^CTerminate batch job (Y/N)? y

D:\DBA User\Cw11\Endeca>cd ..

D:\DBA User\Cw11>forfiles /p "D:\DBA User\Cw11\Endeca" /M *.log /D -2 /c "cmd /C
echo @file"

"test1_20100917.log"
"test2_20100918.log"
"Test_20100916_234500.log"
"Test_20100917_234500.log"

D:\DBA User\Cw11>
-------------------------------------------------
测试环境:
Windows server 2008

希望有知道的朋友给予解答原因和解决方法。

在此谢过。
...全文
361 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjianming45 2010-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 just4 的回复:]
楼主这bat是否有写log到当前目录的语句,是否由此死循环了,
[/Quote]
这个没有,只是简单的读取操作。读取操作的语句就是:forfiles /p "D:\DBA User\Cw11\Endeca" /M *.log /D -2 /c "cmd /C echo @file"
谢谢~
就是just4 2010-09-28
  • 打赏
  • 举报
回复
楼主这bat是否有写log到当前目录的语句,是否由此死循环了,
wangjianming45 2010-09-28
  • 打赏
  • 举报
回复
补充下:
好像在执行forfiles之前,使用过forfiles /s命令,之后就出现这个问题了。命令如下:
forfiles /p "D:\DBA User\Cw11\Endeca" /M *.log /D -2 /s /c "cmd /C echo @file"

匪夷所思~
清除临时⽂件的bat程序 清除与bat⽂件同⽬录的Temp⽂件夹的2种⽅法 @echo off echo 正在清除^^⽂件,请稍等…… ::第⼀种⽅法清除Temp⽂件夹下的所有⼦⽂件夹和⽂件 del "%~dp0Temp\*.*" /f/s/q/a set ph="%cd%\Temp" for /f "delims=" %%i in ('dir /ad/b/s %ph% ') do (if exist "%%i" rd /s/q "%%i") echo 清除完毕! pause exit @echo off echo 正在清除^^⽂件,请稍等…… ::第⼆种⽅法清除Temp⽂件夹下的所有⽂件(包括⼦⽂件夹内的⽂件),保留7天内的⽂件并且不会删除⼦⽂件夹 set ph="%cd%\Temp" forfiles /p "%ph%" /m *.* /d -7 /c "cmd /c del @path" echo 清除完毕! pause exit 知识点:echo为在Dos窗⼝显⽰的信息 :: 为注释 %~dp0Temp 表⽰同⽬录下Temp的全路径 %cd%\Temp 表⽰同⽬录下Temp的全路径 pause 暂停 按任意键后继续 拓展: 判断⽂件夹是否为空 dir /a /s /b "D:\Temp" " findstr . >nul && echo "此⽂件夹不为空" "" echo "此⽂件夹为空" bat获取当前⽬录 @echo off echo 当前盘符:%~d0 echo 当前盘符和路径:%~dp0 echo 当前盘符和路径的短⽂件名格式:%~sdp0 echo 当前批处理全路径:%~f0 echo 当前CMD默认⽬录:%cd% ::上⼀级⽬录路径 echo 当前⽬录:%cd% cd.. echo 上⼀级⽬录路径是:%cd% ::上⼀级⽬录名称这个有的地⽅好⽤有的会返回上级⽬录路径 echo 当前⽬录:%cd% if %cd%==%cd:~,3% echo 当前⽬录已经是%cd:~,1%盘的根⽬录!&goto end cd.. set "bd=%cd%" cd.. set "bbd=%cd%" if "%bbd%"=="%bd%" (echo 上⼀级⽬录是: %cd:~,1%盘的根⽬录! ) else call echo 上⼀级⽬录是: "%%bd:%bbd%\=%%" :end ::当前盘符 echo 当前盘符:%cd:~,1% ::根⽬录 echo 根⽬录:%cd:~,3% pause 结果: ⽇期: @echo off ::⽇期 echo ⽇期: %date% ::时间 echo 时间: %time% ::短⽇期 echo 短⽇期:%date:~0,10% pause exit 结果: 将同⽬录的exe加⼊开机启动项 @echo off set b=%~dp0 echo "注册EXE路径:%b%word.exe" pause reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v word /d "%b%word.exe" pause 取消同⽬录exe的开机启动项 reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v word /f 获取⽂件或⽂件夹名称、修改时间、⼤⼩、路径 @echo off set /p a=请将⽂件夹拉⼊本窗⼝内: for %%i in (%a%) do ( echo 名称: %%~ni echo 修改时间: %%~ti echo ⼤⼩: %%~zi echo 路径: %%~dpi ) pause 结果:

6,849

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧