Board logo

标题: [求助]用批处理删除文件的问题(已解决) [打印本页]

作者: jpowe     时间: 2008-3-8 00:52    标题: [求助]用批处理删除文件的问题(已解决)
想用批处理删除c:\Documents and Settings\CCTV\My Documents\YYGH\DATA文件夹和子文件夹里面的文件,保留子文件夹,请帮忙!谢谢

cd c:\Documents and Settings\CCTV\My Documents\YYGH\DATA
del *.* /s /q 这是我写的,但是觉得有问题,

1.如果没有CCTV这个路径,会删除本机所有文件
2.如果这个脚本启动于C盘外的其他分区上,那么删除的是脚本启动目录下的所有文件 (不知道如何避免这种情况)

Last edited by jpowe on 2008-3-10 at 12:39 AM ]

作者: terse     时间: 2008-3-8 01:45
路径加“”试

作者: lovelymorning     时间: 2008-3-8 13:43
del /s /q "%USERPROFILE%\My Documents\YYGH\DATA\*.*"

这个是删除当前登陆用户的我的文档下的yygh\data文件夹以及下面子目录的所有文件
不管这个脚本放在哪里,删除的都是这个地方

作者: jpowe     时间: 2008-3-8 14:09
Originally posted by lovelymorning at 2008-3-8 01:43 PM:
del /s /q "%USERPROFILE%\My Documents\YYGH\DATA\*.*"

这个是删除当前登陆用户的我的文档下的yygh\data文件夹以及下面子目录的所有文件
不管这个脚本放在哪里,删除的都是这个地方


如果不是当前登陆用户,应该如何写?

作者: jpowe     时间: 2008-3-8 14:10
Originally posted by terse at 2008-3-8 01:45 AM:
路径加“”试

请问""如何加?有两行代码
不好意思.我是菜鸟,请帮忙.谢谢你了

作者: terse     时间: 2008-3-8 16:02
就一行应该可以
del “c:\Documents and Settings\CCTV\My Documents\YYGH\DATA\*.*” /s /q

作者: jpowe     时间: 2008-3-8 20:54
Originally posted by terse at 2008-3-8 04:02 PM:
就一行应该可以
del “c:\Documents and Settings\CCTV\My Documents\YYGH\DATA\*.*” /s /q

用del “c:\Documents and Settings\CCTV\My Documents\YYGH\DATA\*.*” /s /q 做的BAT文件运行无效 提示找不到路径

作者: suntb     时间: 2008-3-8 23:26
Originally posted by jpowe at 2008-3-8 00:52:
想用批处理删除c:\Documents and Settings\CCTV\My Documents\YYGH\DATA文件夹和子文件夹里面的文件,保留子文件夹,请帮忙!谢谢

cd c:\Documents and Settings\CCTV\My Documents\YYGH\DATA
del *.* /s /q 这是我写的,但是觉得有问题,

1.如果没有CCTV这个路径,会删除本机所有文件
2.如果这个脚本启动于C盘外的其他分区上,那么删除的是脚本启动目录下的所有文件 (不知道如何避免这种情况)


第2点的问题你可以在cd后加一个/d开关,也就是

cd /d "c:\Documents and Settings\CCTV\My Documents\YYGH\DATA"

第一个问题也就是说你无法确定这个CCTV文件夹是否存在?

作者: suntb     时间: 2008-3-8 23:34
刚才仔细看了下楼主的要求 发现有些自相矛盾

既然已经删除DATA文件夹了,又怎么会还存在子文件夹

是不是要删除这个DATA文件夹及其所有子文件夹下的文件,但是保留整个文件夹目录结构?

如果是这样的话,可以试试下面代码


@echo off
set pth=c:\Documents and Settings\CCTV\My Documents\YYGH\DATA

if exist "%pth%" (del /q /s "%pth%">nul) else (echo 不存在目标文件夹 "%pth%")
pause


Last edited by suntb on 2008-3-8 at 11:43 PM ]

作者: jpowe     时间: 2008-3-9 20:46
Originally posted by suntb at 2008-3-8 11:34 PM:
刚才仔细看了下楼主的要求 发现有些自相矛盾

既然已经删除DATA文件夹了,又怎么会还存在子文件夹

是不是要删除这个DATA文件夹及其所有子文件 ...

你的理解完全正确,你的CODE我也用过,很好.现在又有一个问题是我想加多几个删除的路径,应该如何写,麻烦你了.
比如:要删除
c:\Documents and Settings\CCTV\My Documents\YYGH\DATA
c:\Documents and Settings\CCTV\My Documents\YYGH\DA

因为\YYGH\ 路径下有些文件不想被删除,但要删除
\DATA\和\DA\下的文件和子文件夹下的文件.,请帮忙.谢谢

作者: suntb     时间: 2008-3-9 21:32

@echo off
set pth=c:\Documents and Settings\CCTV\My Documents\YYGH
for %%i in (DATA DA) do (del /q /s "%pth%\%%i" 1>nul)
pause


Last edited by suntb on 2008-3-9 at 09:33 PM ]

作者: jpowe     时间: 2008-3-9 22:08
Originally posted by suntb at 2008-3-9 09:32 PM:

@echo off
set pth=c:\Documents and Settings\CCTV\My Documents\YYGH
for %%i in (DATA DA) do (del /q /s "%pth%\%%i" 1>nul)
pause


Last edited by suntb on 2008-3 ...

请问中文名字的文件夹一样也可以在括号里面()添加吗?

作者: suntb     时间: 2008-3-9 22:50
删除c:\Documents and Settings\CCTV\My Documents\YYGH下所有子文件夹里面的文件,保留YYGH文件夹下的文件及其子文件夹结构

@echo off
set "pth=c:\Documents and Settings\CCTV\My Documents\YYGH"
for /r "%pth%" %%i in (.) do (if not "%%i"=="%pth%\." (del /q /s "%%i\*.*" 1>nul))
pause

作者: suntb     时间: 2008-3-9 22:51
这样是否符合楼主的要求了?

不需要指定子文件夹名 包括中文及带空格的子文件夹都能处理

作者: jpowe     时间: 2008-3-10 00:38
Originally posted by suntb at 2008-3-9 10:51 PM:
这样是否符合楼主的要求了?

不需要指定子文件夹名 包括中文及带空格的子文件夹都能处理

谢谢suntb强大的处理能力!

作者: ftl491875892     时间: 2010-11-7 20:42
想拜suntb为师 不知收徒弟不~